home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / interp / perl5.005.tar.gz / perl5.005.tar / perl5.005 / pod / perlguts.pod < prev    next >
Text File  |  1998-07-22  |  107KB  |  3,558 lines

  1. =head1 NAME
  2.  
  3. perlguts - Perl's Internal Functions
  4.  
  5. =head1 DESCRIPTION
  6.  
  7. This document attempts to describe some of the internal functions of the
  8. Perl executable.  It is far from complete and probably contains many errors.
  9. Please refer any questions or comments to the author below.
  10.  
  11. =head1 Variables
  12.  
  13. =head2 Datatypes
  14.  
  15. Perl has three typedefs that handle Perl's three main data types:
  16.  
  17.     SV  Scalar Value
  18.     AV  Array Value
  19.     HV  Hash Value
  20.  
  21. Each typedef has specific routines that manipulate the various data types.
  22.  
  23. =head2 What is an "IV"?
  24.  
  25. Perl uses a special typedef IV which is a simple integer type that is
  26. guaranteed to be large enough to hold a pointer (as well as an integer).
  27.  
  28. Perl also uses two special typedefs, I32 and I16, which will always be at
  29. least 32-bits and 16-bits long, respectively.
  30.  
  31. =head2 Working with SVs
  32.  
  33. An SV can be created and loaded with one command.  There are four types of
  34. values that can be loaded: an integer value (IV), a double (NV), a string,
  35. (PV), and another scalar (SV).
  36.  
  37. The six routines are:
  38.  
  39.     SV*  newSViv(IV);
  40.     SV*  newSVnv(double);
  41.     SV*  newSVpv(char*, int);
  42.     SV*  newSVpvn(char*, int);
  43.     SV*  newSVpvf(const char*, ...);
  44.     SV*  newSVsv(SV*);
  45.  
  46. To change the value of an *already-existing* SV, there are seven routines:
  47.  
  48.     void  sv_setiv(SV*, IV);
  49.     void  sv_setuv(SV*, UV);
  50.     void  sv_setnv(SV*, double);
  51.     void  sv_setpv(SV*, char*);
  52.     void  sv_setpvn(SV*, char*, int)
  53.     void  sv_setpvf(SV*, const char*, ...);
  54.     void  sv_setpvfn(SV*, const char*, STRLEN, va_list *, SV **, I32, bool);
  55.     void  sv_setsv(SV*, SV*);
  56.  
  57. Notice that you can choose to specify the length of the string to be
  58. assigned by using C<sv_setpvn>, C<newSVpvn>, or C<newSVpv>, or you may
  59. allow Perl to calculate the length by using C<sv_setpv> or by specifying
  60. 0 as the second argument to C<newSVpv>.  Be warned, though, that Perl will
  61. determine the string's length by using C<strlen>, which depends on the
  62. string terminating with a NUL character.
  63.  
  64. The arguments of C<sv_setpvf> are processed like C<sprintf>, and the
  65. formatted output becomes the value.
  66.  
  67. C<sv_setpvfn> is an analogue of C<vsprintf>, but it allows you to specify
  68. either a pointer to a variable argument list or the address and length of
  69. an array of SVs.  The last argument points to a boolean; on return, if that
  70. boolean is true, then locale-specific information has been used to format
  71. the string, and the string's contents are therefore untrustworty (see
  72. L<perlsec>).  This pointer may be NULL if that information is not
  73. important.  Note that this function requires you to specify the length of
  74. the format.
  75.  
  76. The C<sv_set*()> functions are not generic enough to operate on values
  77. that have "magic".  See L<Magic Virtual Tables> later in this document.
  78.  
  79. All SVs that contain strings should be terminated with a NUL character.
  80. If it is not NUL-terminated there is a risk of
  81. core dumps and corruptions from code which passes the string to C
  82. functions or system calls which expect a NUL-terminated string.
  83. Perl's own functions typically add a trailing NUL for this reason.
  84. Nevertheless, you should be very careful when you pass a string stored
  85. in an SV to a C function or system call.
  86.  
  87. To access the actual value that an SV points to, you can use the macros:
  88.  
  89.     SvIV(SV*)
  90.     SvNV(SV*)
  91.     SvPV(SV*, STRLEN len)
  92.  
  93. which will automatically coerce the actual scalar type into an IV, double,
  94. or string.
  95.  
  96. In the C<SvPV> macro, the length of the string returned is placed into the
  97. variable C<len> (this is a macro, so you do I<not> use C<&len>).  If you do not
  98. care what the length of the data is, use the global variable C<PL_na>.  Remember,
  99. however, that Perl allows arbitrary strings of data that may both contain
  100. NULs and might not be terminated by a NUL.
  101.  
  102. If you want to know if the scalar value is TRUE, you can use:
  103.  
  104.     SvTRUE(SV*)
  105.  
  106. Although Perl will automatically grow strings for you, if you need to force
  107. Perl to allocate more memory for your SV, you can use the macro
  108.  
  109.     SvGROW(SV*, STRLEN newlen)
  110.  
  111. which will determine if more memory needs to be allocated.  If so, it will
  112. call the function C<sv_grow>.  Note that C<SvGROW> can only increase, not
  113. decrease, the allocated memory of an SV and that it does not automatically
  114. add a byte for the a trailing NUL (perl's own string functions typically do
  115. C<SvGROW(sv, len + 1)>).
  116.  
  117. If you have an SV and want to know what kind of data Perl thinks is stored
  118. in it, you can use the following macros to check the type of SV you have.
  119.  
  120.     SvIOK(SV*)
  121.     SvNOK(SV*)
  122.     SvPOK(SV*)
  123.  
  124. You can get and set the current length of the string stored in an SV with
  125. the following macros:
  126.  
  127.     SvCUR(SV*)
  128.     SvCUR_set(SV*, I32 val)
  129.  
  130. You can also get a pointer to the end of the string stored in the SV
  131. with the macro:
  132.  
  133.     SvEND(SV*)
  134.  
  135. But note that these last three macros are valid only if C<SvPOK()> is true.
  136.  
  137. If you want to append something to the end of string stored in an C<SV*>,
  138. you can use the following functions:
  139.  
  140.     void  sv_catpv(SV*, char*);
  141.     void  sv_catpvn(SV*, char*, int);
  142.     void  sv_catpvf(SV*, const char*, ...);
  143.     void  sv_catpvfn(SV*, const char*, STRLEN, va_list *, SV **, I32, bool);
  144.     void  sv_catsv(SV*, SV*);
  145.  
  146. The first function calculates the length of the string to be appended by
  147. using C<strlen>.  In the second, you specify the length of the string
  148. yourself.  The third function processes its arguments like C<sprintf> and
  149. appends the formatted output.  The fourth function works like C<vsprintf>.
  150. You can specify the address and length of an array of SVs instead of the
  151. va_list argument. The fifth function extends the string stored in the first
  152. SV with the string stored in the second SV.  It also forces the second SV
  153. to be interpreted as a string.
  154.  
  155. The C<sv_cat*()> functions are not generic enough to operate on values that
  156. have "magic".  See L<Magic Virtual Tables> later in this document.
  157.  
  158. If you know the name of a scalar variable, you can get a pointer to its SV
  159. by using the following:
  160.  
  161.     SV*  perl_get_sv("package::varname", FALSE);
  162.  
  163. This returns NULL if the variable does not exist.
  164.  
  165. If you want to know if this variable (or any other SV) is actually C<defined>,
  166. you can call:
  167.  
  168.     SvOK(SV*)
  169.  
  170. The scalar C<undef> value is stored in an SV instance called C<PL_sv_undef>.  Its
  171. address can be used whenever an C<SV*> is needed.
  172.  
  173. There are also the two values C<PL_sv_yes> and C<PL_sv_no>, which contain Boolean
  174. TRUE and FALSE values, respectively.  Like C<PL_sv_undef>, their addresses can
  175. be used whenever an C<SV*> is needed.
  176.  
  177. Do not be fooled into thinking that C<(SV *) 0> is the same as C<&PL_sv_undef>.
  178. Take this code:
  179.  
  180.     SV* sv = (SV*) 0;
  181.     if (I-am-to-return-a-real-value) {
  182.             sv = sv_2mortal(newSViv(42));
  183.     }
  184.     sv_setsv(ST(0), sv);
  185.  
  186. This code tries to return a new SV (which contains the value 42) if it should
  187. return a real value, or undef otherwise.  Instead it has returned a NULL
  188. pointer which, somewhere down the line, will cause a segmentation violation,
  189. bus error, or just weird results.  Change the zero to C<&PL_sv_undef> in the first
  190. line and all will be well.
  191.  
  192. To free an SV that you've created, call C<SvREFCNT_dec(SV*)>.  Normally this
  193. call is not necessary (see L<Reference Counts and Mortality>).
  194.  
  195. =head2 What's Really Stored in an SV?
  196.  
  197. Recall that the usual method of determining the type of scalar you have is
  198. to use C<Sv*OK> macros.  Because a scalar can be both a number and a string,
  199. usually these macros will always return TRUE and calling the C<Sv*V>
  200. macros will do the appropriate conversion of string to integer/double or
  201. integer/double to string.
  202.  
  203. If you I<really> need to know if you have an integer, double, or string
  204. pointer in an SV, you can use the following three macros instead:
  205.  
  206.     SvIOKp(SV*)
  207.     SvNOKp(SV*)
  208.     SvPOKp(SV*)
  209.  
  210. These will tell you if you truly have an integer, double, or string pointer
  211. stored in your SV.  The "p" stands for private.
  212.  
  213. In general, though, it's best to use the C<Sv*V> macros.
  214.  
  215. =head2 Working with AVs
  216.  
  217. There are two ways to create and load an AV.  The first method creates an
  218. empty AV:
  219.  
  220.     AV*  newAV();
  221.  
  222. The second method both creates the AV and initially populates it with SVs:
  223.  
  224.     AV*  av_make(I32 num, SV **ptr);
  225.  
  226. The second argument points to an array containing C<num> C<SV*>'s.  Once the
  227. AV has been created, the SVs can be destroyed, if so desired.
  228.  
  229. Once the AV has been created, the following operations are possible on AVs:
  230.  
  231.     void  av_push(AV*, SV*);
  232.     SV*   av_pop(AV*);
  233.     SV*   av_shift(AV*);
  234.     void  av_unshift(AV*, I32 num);
  235.  
  236. These should be familiar operations, with the exception of C<av_unshift>.
  237. This routine adds C<num> elements at the front of the array with the C<undef>
  238. value.  You must then use C<av_store> (described below) to assign values
  239. to these new elements.
  240.  
  241. Here are some other functions:
  242.  
  243.     I32   av_len(AV*);
  244.     SV**  av_fetch(AV*, I32 key, I32 lval);
  245.     SV**  av_store(AV*, I32 key, SV* val);
  246.  
  247. The C<av_len> function returns the highest index value in array (just
  248. like $#array in Perl).  If the array is empty, -1 is returned.  The
  249. C<av_fetch> function returns the value at index C<key>, but if C<lval>
  250. is non-zero, then C<av_fetch> will store an undef value at that index.
  251. The C<av_store> function stores the value C<val> at index C<key>, and does
  252. not increment the reference count of C<val>.  Thus the caller is responsible
  253. for taking care of that, and if C<av_store> returns NULL, the caller will
  254. have to decrement the reference count to avoid a memory leak.  Note that
  255. C<av_fetch> and C<av_store> both return C<SV**>'s, not C<SV*>'s as their
  256. return value.
  257.  
  258.     void  av_clear(AV*);
  259.     void  av_undef(AV*);
  260.     void  av_extend(AV*, I32 key);
  261.  
  262. The C<av_clear> function deletes all the elements in the AV* array, but
  263. does not actually delete the array itself.  The C<av_undef> function will
  264. delete all the elements in the array plus the array itself.  The
  265. C<av_extend> function extends the array so that it contains C<key>
  266. elements.  If C<key> is less than the current length of the array, then
  267. nothing is done.
  268.  
  269. If you know the name of an array variable, you can get a pointer to its AV
  270. by using the following:
  271.  
  272.     AV*  perl_get_av("package::varname", FALSE);
  273.  
  274. This returns NULL if the variable does not exist.
  275.  
  276. See L<Understanding the Magic of Tied Hashes and Arrays> for more
  277. information on how to use the array access functions on tied arrays.
  278.  
  279. =head2 Working with HVs
  280.  
  281. To create an HV, you use the following routine:
  282.  
  283.     HV*  newHV();
  284.  
  285. Once the HV has been created, the following operations are possible on HVs:
  286.  
  287.     SV**  hv_store(HV*, char* key, U32 klen, SV* val, U32 hash);
  288.     SV**  hv_fetch(HV*, char* key, U32 klen, I32 lval);
  289.  
  290. The C<klen> parameter is the length of the key being passed in (Note that
  291. you cannot pass 0 in as a value of C<klen> to tell Perl to measure the
  292. length of the key).  The C<val> argument contains the SV pointer to the
  293. scalar being stored, and C<hash> is the precomputed hash value (zero if
  294. you want C<hv_store> to calculate it for you).  The C<lval> parameter
  295. indicates whether this fetch is actually a part of a store operation, in
  296. which case a new undefined value will be added to the HV with the supplied
  297. key and C<hv_fetch> will return as if the value had already existed.
  298.  
  299. Remember that C<hv_store> and C<hv_fetch> return C<SV**>'s and not just
  300. C<SV*>.  To access the scalar value, you must first dereference the return
  301. value.  However, you should check to make sure that the return value is
  302. not NULL before dereferencing it.
  303.  
  304. These two functions check if a hash table entry exists, and deletes it.
  305.  
  306.     bool  hv_exists(HV*, char* key, U32 klen);
  307.     SV*   hv_delete(HV*, char* key, U32 klen, I32 flags);
  308.  
  309. If C<flags> does not include the C<G_DISCARD> flag then C<hv_delete> will
  310. create and return a mortal copy of the deleted value.
  311.  
  312. And more miscellaneous functions:
  313.  
  314.     void   hv_clear(HV*);
  315.     void   hv_undef(HV*);
  316.  
  317. Like their AV counterparts, C<hv_clear> deletes all the entries in the hash
  318. table but does not actually delete the hash table.  The C<hv_undef> deletes
  319. both the entries and the hash table itself.
  320.  
  321. Perl keeps the actual data in linked list of structures with a typedef of HE.
  322. These contain the actual key and value pointers (plus extra administrative
  323. overhead).  The key is a string pointer; the value is an C<SV*>.  However,
  324. once you have an C<HE*>, to get the actual key and value, use the routines
  325. specified below.
  326.  
  327.     I32    hv_iterinit(HV*);
  328.             /* Prepares starting point to traverse hash table */
  329.     HE*    hv_iternext(HV*);
  330.             /* Get the next entry, and return a pointer to a
  331.                structure that has both the key and value */
  332.     char*  hv_iterkey(HE* entry, I32* retlen);
  333.             /* Get the key from an HE structure and also return
  334.                the length of the key string */
  335.     SV*    hv_iterval(HV*, HE* entry);
  336.             /* Return a SV pointer to the value of the HE
  337.                structure */
  338.     SV*    hv_iternextsv(HV*, char** key, I32* retlen);
  339.             /* This convenience routine combines hv_iternext,
  340.            hv_iterkey, and hv_iterval.  The key and retlen
  341.            arguments are return values for the key and its
  342.            length.  The value is returned in the SV* argument */
  343.  
  344. If you know the name of a hash variable, you can get a pointer to its HV
  345. by using the following:
  346.  
  347.     HV*  perl_get_hv("package::varname", FALSE);
  348.  
  349. This returns NULL if the variable does not exist.
  350.  
  351. The hash algorithm is defined in the C<PERL_HASH(hash, key, klen)> macro:
  352.  
  353.     i = klen;
  354.     hash = 0;
  355.     s = key;
  356.     while (i--)
  357.     hash = hash * 33 + *s++;
  358.  
  359. See L<Understanding the Magic of Tied Hashes and Arrays> for more
  360. information on how to use the hash access functions on tied hashes.
  361.  
  362. =head2 Hash API Extensions
  363.  
  364. Beginning with version 5.004, the following functions are also supported:
  365.  
  366.     HE*     hv_fetch_ent  (HV* tb, SV* key, I32 lval, U32 hash);
  367.     HE*     hv_store_ent  (HV* tb, SV* key, SV* val, U32 hash);
  368.     
  369.     bool    hv_exists_ent (HV* tb, SV* key, U32 hash);
  370.     SV*     hv_delete_ent (HV* tb, SV* key, I32 flags, U32 hash);
  371.     
  372.     SV*     hv_iterkeysv  (HE* entry);
  373.  
  374. Note that these functions take C<SV*> keys, which simplifies writing
  375. of extension code that deals with hash structures.  These functions
  376. also allow passing of C<SV*> keys to C<tie> functions without forcing
  377. you to stringify the keys (unlike the previous set of functions).
  378.  
  379. They also return and accept whole hash entries (C<HE*>), making their
  380. use more efficient (since the hash number for a particular string
  381. doesn't have to be recomputed every time).  See L<API LISTING> later in
  382. this document for detailed descriptions.
  383.  
  384. The following macros must always be used to access the contents of hash
  385. entries.  Note that the arguments to these macros must be simple
  386. variables, since they may get evaluated more than once.  See
  387. L<API LISTING> later in this document for detailed descriptions of these
  388. macros.
  389.  
  390.     HePV(HE* he, STRLEN len)
  391.     HeVAL(HE* he)
  392.     HeHASH(HE* he)
  393.     HeSVKEY(HE* he)
  394.     HeSVKEY_force(HE* he)
  395.     HeSVKEY_set(HE* he, SV* sv)
  396.  
  397. These two lower level macros are defined, but must only be used when
  398. dealing with keys that are not C<SV*>s:
  399.  
  400.     HeKEY(HE* he)
  401.     HeKLEN(HE* he)
  402.  
  403. Note that both C<hv_store> and C<hv_store_ent> do not increment the
  404. reference count of the stored C<val>, which is the caller's responsibility.
  405. If these functions return a NULL value, the caller will usually have to
  406. decrement the reference count of C<val> to avoid a memory leak.
  407.  
  408. =head2 References
  409.  
  410. References are a special type of scalar that point to other data types
  411. (including references).
  412.  
  413. To create a reference, use either of the following functions:
  414.  
  415.     SV* newRV_inc((SV*) thing);
  416.     SV* newRV_noinc((SV*) thing);
  417.  
  418. The C<thing> argument can be any of an C<SV*>, C<AV*>, or C<HV*>.  The
  419. functions are identical except that C<newRV_inc> increments the reference
  420. count of the C<thing>, while C<newRV_noinc> does not.  For historical
  421. reasons, C<newRV> is a synonym for C<newRV_inc>.
  422.  
  423. Once you have a reference, you can use the following macro to dereference
  424. the reference:
  425.  
  426.     SvRV(SV*)
  427.  
  428. then call the appropriate routines, casting the returned C<SV*> to either an
  429. C<AV*> or C<HV*>, if required.
  430.  
  431. To determine if an SV is a reference, you can use the following macro:
  432.  
  433.     SvROK(SV*)
  434.  
  435. To discover what type of value the reference refers to, use the following
  436. macro and then check the return value.
  437.  
  438.     SvTYPE(SvRV(SV*))
  439.  
  440. The most useful types that will be returned are:
  441.  
  442.     SVt_IV    Scalar
  443.     SVt_NV    Scalar
  444.     SVt_PV    Scalar
  445.     SVt_RV    Scalar
  446.     SVt_PVAV  Array
  447.     SVt_PVHV  Hash
  448.     SVt_PVCV  Code
  449.     SVt_PVGV  Glob (possible a file handle)
  450.     SVt_PVMG  Blessed or Magical Scalar
  451.  
  452.     See the sv.h header file for more details.
  453.  
  454. =head2 Blessed References and Class Objects
  455.  
  456. References are also used to support object-oriented programming.  In the
  457. OO lexicon, an object is simply a reference that has been blessed into a
  458. package (or class).  Once blessed, the programmer may now use the reference
  459. to access the various methods in the class.
  460.  
  461. A reference can be blessed into a package with the following function:
  462.  
  463.     SV* sv_bless(SV* sv, HV* stash);
  464.  
  465. The C<sv> argument must be a reference.  The C<stash> argument specifies
  466. which class the reference will belong to.  See
  467. L<Stashes and Globs> for information on converting class names into stashes.
  468.  
  469. /* Still under construction */
  470.  
  471. Upgrades rv to reference if not already one.  Creates new SV for rv to
  472. point to.  If C<classname> is non-null, the SV is blessed into the specified
  473. class.  SV is returned.
  474.  
  475.     SV* newSVrv(SV* rv, char* classname);
  476.  
  477. Copies integer or double into an SV whose reference is C<rv>.  SV is blessed
  478. if C<classname> is non-null.
  479.  
  480.     SV* sv_setref_iv(SV* rv, char* classname, IV iv);
  481.     SV* sv_setref_nv(SV* rv, char* classname, NV iv);
  482.  
  483. Copies the pointer value (I<the address, not the string!>) into an SV whose
  484. reference is rv.  SV is blessed if C<classname> is non-null.
  485.  
  486.     SV* sv_setref_pv(SV* rv, char* classname, PV iv);
  487.  
  488. Copies string into an SV whose reference is C<rv>.  Set length to 0 to let
  489. Perl calculate the string length.  SV is blessed if C<classname> is non-null.
  490.  
  491.     SV* sv_setref_pvn(SV* rv, char* classname, PV iv, int length);
  492.  
  493. Tests whether the SV is blessed into the specified class.  It does not
  494. check inheritance relationships.
  495.  
  496.     int  sv_isa(SV* sv, char* name);
  497.  
  498. Tests whether the SV is a reference to a blessed object.
  499.  
  500.     int  sv_isobject(SV* sv);
  501.  
  502. Tests whether the SV is derived from the specified class. SV can be either
  503. a reference to a blessed object or a string containing a class name. This
  504. is the function implementing the C<UNIVERSAL::isa> functionality.
  505.  
  506.     bool sv_derived_from(SV* sv, char* name);
  507.  
  508. To check if you've got an object derived from a specific class you have 
  509. to write:
  510.  
  511.     if (sv_isobject(sv) && sv_derived_from(sv, class)) { ... }
  512.  
  513. =head2 Creating New Variables
  514.  
  515. To create a new Perl variable with an undef value which can be accessed from
  516. your Perl script, use the following routines, depending on the variable type.
  517.  
  518.     SV*  perl_get_sv("package::varname", TRUE);
  519.     AV*  perl_get_av("package::varname", TRUE);
  520.     HV*  perl_get_hv("package::varname", TRUE);
  521.  
  522. Notice the use of TRUE as the second parameter.  The new variable can now
  523. be set, using the routines appropriate to the data type.
  524.  
  525. There are additional macros whose values may be bitwise OR'ed with the
  526. C<TRUE> argument to enable certain extra features.  Those bits are:
  527.  
  528.     GV_ADDMULTI    Marks the variable as multiply defined, thus preventing the
  529.         "Name <varname> used only once: possible typo" warning.
  530.     GV_ADDWARN    Issues the warning "Had to create <varname> unexpectedly" if
  531.         the variable did not exist before the function was called.
  532.  
  533. If you do not specify a package name, the variable is created in the current
  534. package.
  535.  
  536. =head2 Reference Counts and Mortality
  537.  
  538. Perl uses an reference count-driven garbage collection mechanism. SVs,
  539. AVs, or HVs (xV for short in the following) start their life with a
  540. reference count of 1.  If the reference count of an xV ever drops to 0,
  541. then it will be destroyed and its memory made available for reuse.
  542.  
  543. This normally doesn't happen at the Perl level unless a variable is
  544. undef'ed or the last variable holding a reference to it is changed or
  545. overwritten.  At the internal level, however, reference counts can be
  546. manipulated with the following macros:
  547.  
  548.     int SvREFCNT(SV* sv);
  549.     SV* SvREFCNT_inc(SV* sv);
  550.     void SvREFCNT_dec(SV* sv);
  551.  
  552. However, there is one other function which manipulates the reference
  553. count of its argument.  The C<newRV_inc> function, you will recall,
  554. creates a reference to the specified argument.  As a side effect,
  555. it increments the argument's reference count.  If this is not what
  556. you want, use C<newRV_noinc> instead.
  557.  
  558. For example, imagine you want to return a reference from an XSUB function.
  559. Inside the XSUB routine, you create an SV which initially has a reference
  560. count of one.  Then you call C<newRV_inc>, passing it the just-created SV.
  561. This returns the reference as a new SV, but the reference count of the
  562. SV you passed to C<newRV_inc> has been incremented to two.  Now you
  563. return the reference from the XSUB routine and forget about the SV.
  564. But Perl hasn't!  Whenever the returned reference is destroyed, the
  565. reference count of the original SV is decreased to one and nothing happens.
  566. The SV will hang around without any way to access it until Perl itself
  567. terminates.  This is a memory leak.
  568.  
  569. The correct procedure, then, is to use C<newRV_noinc> instead of
  570. C<newRV_inc>.  Then, if and when the last reference is destroyed,
  571. the reference count of the SV will go to zero and it will be destroyed,
  572. stopping any memory leak.
  573.  
  574. There are some convenience functions available that can help with the
  575. destruction of xVs.  These functions introduce the concept of "mortality".
  576. An xV that is mortal has had its reference count marked to be decremented,
  577. but not actually decremented, until "a short time later".  Generally the
  578. term "short time later" means a single Perl statement, such as a call to
  579. an XSUB function.  The actual determinant for when mortal xVs have their
  580. reference count decremented depends on two macros, SAVETMPS and FREETMPS.
  581. See L<perlcall> and L<perlxs> for more details on these macros.
  582.  
  583. "Mortalization" then is at its simplest a deferred C<SvREFCNT_dec>.
  584. However, if you mortalize a variable twice, the reference count will
  585. later be decremented twice.
  586.  
  587. You should be careful about creating mortal variables.  Strange things
  588. can happen if you make the same value mortal within multiple contexts,
  589. or if you make a variable mortal multiple times.
  590.  
  591. To create a mortal variable, use the functions:
  592.  
  593.     SV*  sv_newmortal()
  594.     SV*  sv_2mortal(SV*)
  595.     SV*  sv_mortalcopy(SV*)
  596.  
  597. The first call creates a mortal SV, the second converts an existing
  598. SV to a mortal SV (and thus defers a call to C<SvREFCNT_dec>), and the
  599. third creates a mortal copy of an existing SV.
  600.  
  601. The mortal routines are not just for SVs -- AVs and HVs can be
  602. made mortal by passing their address (type-casted to C<SV*>) to the
  603. C<sv_2mortal> or C<sv_mortalcopy> routines.
  604.  
  605. =head2 Stashes and Globs
  606.  
  607. A "stash" is a hash that contains all of the different objects that
  608. are contained within a package.  Each key of the stash is a symbol
  609. name (shared by all the different types of objects that have the same
  610. name), and each value in the hash table is a GV (Glob Value).  This GV
  611. in turn contains references to the various objects of that name,
  612. including (but not limited to) the following:
  613.  
  614.     Scalar Value
  615.     Array Value
  616.     Hash Value
  617.     I/O Handle
  618.     Format
  619.     Subroutine
  620.  
  621. There is a single stash called "PL_defstash" that holds the items that exist
  622. in the "main" package.  To get at the items in other packages, append the
  623. string "::" to the package name.  The items in the "Foo" package are in
  624. the stash "Foo::" in PL_defstash.  The items in the "Bar::Baz" package are
  625. in the stash "Baz::" in "Bar::"'s stash.
  626.  
  627. To get the stash pointer for a particular package, use the function:
  628.  
  629.     HV*  gv_stashpv(char* name, I32 create)
  630.     HV*  gv_stashsv(SV*, I32 create)
  631.  
  632. The first function takes a literal string, the second uses the string stored
  633. in the SV.  Remember that a stash is just a hash table, so you get back an
  634. C<HV*>.  The C<create> flag will create a new package if it is set.
  635.  
  636. The name that C<gv_stash*v> wants is the name of the package whose symbol table
  637. you want.  The default package is called C<main>.  If you have multiply nested
  638. packages, pass their names to C<gv_stash*v>, separated by C<::> as in the Perl
  639. language itself.
  640.  
  641. Alternately, if you have an SV that is a blessed reference, you can find
  642. out the stash pointer by using:
  643.  
  644.     HV*  SvSTASH(SvRV(SV*));
  645.  
  646. then use the following to get the package name itself:
  647.  
  648.     char*  HvNAME(HV* stash);
  649.  
  650. If you need to bless or re-bless an object you can use the following
  651. function:
  652.  
  653.     SV*  sv_bless(SV*, HV* stash)
  654.  
  655. where the first argument, an C<SV*>, must be a reference, and the second
  656. argument is a stash.  The returned C<SV*> can now be used in the same way
  657. as any other SV.
  658.  
  659. For more information on references and blessings, consult L<perlref>.
  660.  
  661. =head2 Double-Typed SVs
  662.  
  663. Scalar variables normally contain only one type of value, an integer,
  664. double, pointer, or reference.  Perl will automatically convert the
  665. actual scalar data from the stored type into the requested type.
  666.  
  667. Some scalar variables contain more than one type of scalar data.  For
  668. example, the variable C<$!> contains either the numeric value of C<errno>
  669. or its string equivalent from either C<strerror> or C<sys_errlist[]>.
  670.  
  671. To force multiple data values into an SV, you must do two things: use the
  672. C<sv_set*v> routines to add the additional scalar type, then set a flag
  673. so that Perl will believe it contains more than one type of data.  The
  674. four macros to set the flags are:
  675.  
  676.     SvIOK_on
  677.     SvNOK_on
  678.     SvPOK_on
  679.     SvROK_on
  680.  
  681. The particular macro you must use depends on which C<sv_set*v> routine
  682. you called first.  This is because every C<sv_set*v> routine turns on
  683. only the bit for the particular type of data being set, and turns off
  684. all the rest.
  685.  
  686. For example, to create a new Perl variable called "dberror" that contains
  687. both the numeric and descriptive string error values, you could use the
  688. following code:
  689.  
  690.     extern int  dberror;
  691.     extern char *dberror_list;
  692.  
  693.     SV* sv = perl_get_sv("dberror", TRUE);
  694.     sv_setiv(sv, (IV) dberror);
  695.     sv_setpv(sv, dberror_list[dberror]);
  696.     SvIOK_on(sv);
  697.  
  698. If the order of C<sv_setiv> and C<sv_setpv> had been reversed, then the
  699. macro C<SvPOK_on> would need to be called instead of C<SvIOK_on>.
  700.  
  701. =head2 Magic Variables
  702.  
  703. [This section still under construction.  Ignore everything here.  Post no
  704. bills.  Everything not permitted is forbidden.]
  705.  
  706. Any SV may be magical, that is, it has special features that a normal
  707. SV does not have.  These features are stored in the SV structure in a
  708. linked list of C<struct magic>'s, typedef'ed to C<MAGIC>.
  709.  
  710.     struct magic {
  711.         MAGIC*      mg_moremagic;
  712.         MGVTBL*     mg_virtual;
  713.         U16         mg_private;
  714.         char        mg_type;
  715.         U8          mg_flags;
  716.         SV*         mg_obj;
  717.         char*       mg_ptr;
  718.         I32         mg_len;
  719.     };
  720.  
  721. Note this is current as of patchlevel 0, and could change at any time.
  722.  
  723. =head2 Assigning Magic
  724.  
  725. Perl adds magic to an SV using the sv_magic function:
  726.  
  727.     void sv_magic(SV* sv, SV* obj, int how, char* name, I32 namlen);
  728.  
  729. The C<sv> argument is a pointer to the SV that is to acquire a new magical
  730. feature.
  731.  
  732. If C<sv> is not already magical, Perl uses the C<SvUPGRADE> macro to
  733. set the C<SVt_PVMG> flag for the C<sv>.  Perl then continues by adding
  734. it to the beginning of the linked list of magical features.  Any prior
  735. entry of the same type of magic is deleted.  Note that this can be
  736. overridden, and multiple instances of the same type of magic can be
  737. associated with an SV.
  738.  
  739. The C<name> and C<namlen> arguments are used to associate a string with
  740. the magic, typically the name of a variable. C<namlen> is stored in the
  741. C<mg_len> field and if C<name> is non-null and C<namlen> >= 0 a malloc'd
  742. copy of the name is stored in C<mg_ptr> field.
  743.  
  744. The sv_magic function uses C<how> to determine which, if any, predefined
  745. "Magic Virtual Table" should be assigned to the C<mg_virtual> field.
  746. See the "Magic Virtual Table" section below.  The C<how> argument is also
  747. stored in the C<mg_type> field.
  748.  
  749. The C<obj> argument is stored in the C<mg_obj> field of the C<MAGIC>
  750. structure.  If it is not the same as the C<sv> argument, the reference
  751. count of the C<obj> object is incremented.  If it is the same, or if
  752. the C<how> argument is "#", or if it is a NULL pointer, then C<obj> is
  753. merely stored, without the reference count being incremented.
  754.  
  755. There is also a function to add magic to an C<HV>:
  756.  
  757.     void hv_magic(HV *hv, GV *gv, int how);
  758.  
  759. This simply calls C<sv_magic> and coerces the C<gv> argument into an C<SV>.
  760.  
  761. To remove the magic from an SV, call the function sv_unmagic:
  762.  
  763.     void sv_unmagic(SV *sv, int type);
  764.  
  765. The C<type> argument should be equal to the C<how> value when the C<SV>
  766. was initially made magical.
  767.  
  768. =head2 Magic Virtual Tables
  769.  
  770. The C<mg_virtual> field in the C<MAGIC> structure is a pointer to a
  771. C<MGVTBL>, which is a structure of function pointers and stands for
  772. "Magic Virtual Table" to handle the various operations that might be
  773. applied to that variable.
  774.  
  775. The C<MGVTBL> has five pointers to the following routine types:
  776.  
  777.     int  (*svt_get)(SV* sv, MAGIC* mg);
  778.     int  (*svt_set)(SV* sv, MAGIC* mg);
  779.     U32  (*svt_len)(SV* sv, MAGIC* mg);
  780.     int  (*svt_clear)(SV* sv, MAGIC* mg);
  781.     int  (*svt_free)(SV* sv, MAGIC* mg);
  782.  
  783. This MGVTBL structure is set at compile-time in C<perl.h> and there are
  784. currently 19 types (or 21 with overloading turned on).  These different
  785. structures contain pointers to various routines that perform additional
  786. actions depending on which function is being called.
  787.  
  788.     Function pointer    Action taken
  789.     ----------------    ------------
  790.     svt_get             Do something after the value of the SV is retrieved.
  791.     svt_set             Do something after the SV is assigned a value.
  792.     svt_len             Report on the SV's length.
  793.     svt_clear        Clear something the SV represents.
  794.     svt_free            Free any extra storage associated with the SV.
  795.  
  796. For instance, the MGVTBL structure called C<vtbl_sv> (which corresponds
  797. to an C<mg_type> of '\0') contains:
  798.  
  799.     { magic_get, magic_set, magic_len, 0, 0 }
  800.  
  801. Thus, when an SV is determined to be magical and of type '\0', if a get
  802. operation is being performed, the routine C<magic_get> is called.  All
  803. the various routines for the various magical types begin with C<magic_>.
  804.  
  805. The current kinds of Magic Virtual Tables are:
  806.  
  807.     mg_type  MGVTBL              Type of magic
  808.     -------  ------              ----------------------------
  809.     \0       vtbl_sv             Special scalar variable
  810.     A        vtbl_amagic         %OVERLOAD hash
  811.     a        vtbl_amagicelem     %OVERLOAD hash element
  812.     c        (none)              Holds overload table (AMT) on stash
  813.     B        vtbl_bm             Boyer-Moore (fast string search)
  814.     E        vtbl_env            %ENV hash
  815.     e        vtbl_envelem        %ENV hash element
  816.     f        vtbl_fm             Formline ('compiled' format)
  817.     g        vtbl_mglob          m//g target / study()ed string
  818.     I        vtbl_isa            @ISA array
  819.     i        vtbl_isaelem        @ISA array element
  820.     k        vtbl_nkeys          scalar(keys()) lvalue
  821.     L        (none)              Debugger %_<filename 
  822.     l        vtbl_dbline         Debugger %_<filename element
  823.     o        vtbl_collxfrm       Locale transformation
  824.     P        vtbl_pack           Tied array or hash
  825.     p        vtbl_packelem       Tied array or hash element
  826.     q        vtbl_packelem       Tied scalar or handle
  827.     S        vtbl_sig            %SIG hash
  828.     s        vtbl_sigelem        %SIG hash element
  829.     t        vtbl_taint          Taintedness
  830.     U        vtbl_uvar           Available for use by extensions
  831.     v        vtbl_vec            vec() lvalue
  832.     x        vtbl_substr         substr() lvalue
  833.     y        vtbl_defelem        Shadow "foreach" iterator variable /
  834.                                   smart parameter vivification
  835.     *        vtbl_glob           GV (typeglob)
  836.     #        vtbl_arylen         Array length ($#ary)
  837.     .        vtbl_pos            pos() lvalue
  838.     ~        (none)              Available for use by extensions
  839.  
  840. When an uppercase and lowercase letter both exist in the table, then the
  841. uppercase letter is used to represent some kind of composite type (a list
  842. or a hash), and the lowercase letter is used to represent an element of
  843. that composite type.
  844.  
  845. The '~' and 'U' magic types are defined specifically for use by
  846. extensions and will not be used by perl itself.  Extensions can use
  847. '~' magic to 'attach' private information to variables (typically
  848. objects).  This is especially useful because there is no way for
  849. normal perl code to corrupt this private information (unlike using
  850. extra elements of a hash object).
  851.  
  852. Similarly, 'U' magic can be used much like tie() to call a C function
  853. any time a scalar's value is used or changed.  The C<MAGIC>'s
  854. C<mg_ptr> field points to a C<ufuncs> structure:
  855.  
  856.     struct ufuncs {
  857.         I32 (*uf_val)(IV, SV*);
  858.         I32 (*uf_set)(IV, SV*);
  859.         IV uf_index;
  860.     };
  861.  
  862. When the SV is read from or written to, the C<uf_val> or C<uf_set>
  863. function will be called with C<uf_index> as the first arg and a
  864. pointer to the SV as the second.
  865.  
  866. Note that because multiple extensions may be using '~' or 'U' magic,
  867. it is important for extensions to take extra care to avoid conflict.
  868. Typically only using the magic on objects blessed into the same class
  869. as the extension is sufficient.  For '~' magic, it may also be
  870. appropriate to add an I32 'signature' at the top of the private data
  871. area and check that.
  872.  
  873. Also note that the C<sv_set*()> and C<sv_cat*()> functions described
  874. earlier do B<not> invoke 'set' magic on their targets.  This must
  875. be done by the user either by calling the C<SvSETMAGIC()> macro after
  876. calling these functions, or by using one of the C<sv_set*_mg()> or
  877. C<sv_cat*_mg()> functions.  Similarly, generic C code must call the
  878. C<SvGETMAGIC()> macro to invoke any 'get' magic if they use an SV
  879. obtained from external sources in functions that don't handle magic.
  880. L<API LISTING> later in this document identifies such functions.
  881. For example, calls to the C<sv_cat*()> functions typically need to be
  882. followed by C<SvSETMAGIC()>, but they don't need a prior C<SvGETMAGIC()>
  883. since their implementation handles 'get' magic.
  884.  
  885. =head2 Finding Magic
  886.  
  887.     MAGIC* mg_find(SV*, int type); /* Finds the magic pointer of that type */
  888.  
  889. This routine returns a pointer to the C<MAGIC> structure stored in the SV.
  890. If the SV does not have that magical feature, C<NULL> is returned.  Also,
  891. if the SV is not of type SVt_PVMG, Perl may core dump.
  892.  
  893.     int mg_copy(SV* sv, SV* nsv, char* key, STRLEN klen);
  894.  
  895. This routine checks to see what types of magic C<sv> has.  If the mg_type
  896. field is an uppercase letter, then the mg_obj is copied to C<nsv>, but
  897. the mg_type field is changed to be the lowercase letter.
  898.  
  899. =head2 Understanding the Magic of Tied Hashes and Arrays
  900.  
  901. Tied hashes and arrays are magical beasts of the 'P' magic type.
  902.  
  903. WARNING: As of the 5.004 release, proper usage of the array and hash
  904. access functions requires understanding a few caveats.  Some
  905. of these caveats are actually considered bugs in the API, to be fixed
  906. in later releases, and are bracketed with [MAYCHANGE] below. If
  907. you find yourself actually applying such information in this section, be
  908. aware that the behavior may change in the future, umm, without warning.
  909.  
  910. The C<av_store> function, when given a tied array argument, merely
  911. copies the magic of the array onto the value to be "stored", using
  912. C<mg_copy>.  It may also return NULL, indicating that the value did not
  913. actually need to be stored in the array.  [MAYCHANGE] After a call to
  914. C<av_store> on a tied array, the caller will usually need to call
  915. C<mg_set(val)> to actually invoke the perl level "STORE" method on the
  916. TIEARRAY object.  If C<av_store> did return NULL, a call to
  917. C<SvREFCNT_dec(val)> will also be usually necessary to avoid a memory
  918. leak. [/MAYCHANGE]
  919.  
  920. The previous paragraph is applicable verbatim to tied hash access using the
  921. C<hv_store> and C<hv_store_ent> functions as well.
  922.  
  923. C<av_fetch> and the corresponding hash functions C<hv_fetch> and
  924. C<hv_fetch_ent> actually return an undefined mortal value whose magic
  925. has been initialized using C<mg_copy>.  Note the value so returned does not
  926. need to be deallocated, as it is already mortal.  [MAYCHANGE] But you will
  927. need to call C<mg_get()> on the returned value in order to actually invoke
  928. the perl level "FETCH" method on the underlying TIE object.  Similarly,
  929. you may also call C<mg_set()> on the return value after possibly assigning
  930. a suitable value to it using C<sv_setsv>,  which will invoke the "STORE"
  931. method on the TIE object. [/MAYCHANGE]
  932.  
  933. [MAYCHANGE]
  934. In other words, the array or hash fetch/store functions don't really
  935. fetch and store actual values in the case of tied arrays and hashes.  They
  936. merely call C<mg_copy> to attach magic to the values that were meant to be
  937. "stored" or "fetched".  Later calls to C<mg_get> and C<mg_set> actually
  938. do the job of invoking the TIE methods on the underlying objects.  Thus
  939. the magic mechanism currently implements a kind of lazy access to arrays
  940. and hashes.
  941.  
  942. Currently (as of perl version 5.004), use of the hash and array access
  943. functions requires the user to be aware of whether they are operating on
  944. "normal" hashes and arrays, or on their tied variants.  The API may be
  945. changed to provide more transparent access to both tied and normal data
  946. types in future versions.
  947. [/MAYCHANGE]
  948.  
  949. You would do well to understand that the TIEARRAY and TIEHASH interfaces
  950. are mere sugar to invoke some perl method calls while using the uniform hash
  951. and array syntax.  The use of this sugar imposes some overhead (typically
  952. about two to four extra opcodes per FETCH/STORE operation, in addition to
  953. the creation of all the mortal variables required to invoke the methods).
  954. This overhead will be comparatively small if the TIE methods are themselves
  955. substantial, but if they are only a few statements long, the overhead
  956. will not be insignificant.
  957.  
  958. =head2 Localizing changes
  959.  
  960. Perl has a very handy construction
  961.  
  962.   {
  963.     local $var = 2;
  964.     ...
  965.   }
  966.  
  967. This construction is I<approximately> equivalent to
  968.  
  969.   {
  970.     my $oldvar = $var;
  971.     $var = 2;
  972.     ...
  973.     $var = $oldvar;
  974.   }
  975.  
  976. The biggest difference is that the first construction would
  977. reinstate the initial value of $var, irrespective of how control exits
  978. the block: C<goto>, C<return>, C<die>/C<eval> etc. It is a little bit
  979. more efficient as well.
  980.  
  981. There is a way to achieve a similar task from C via Perl API: create a
  982. I<pseudo-block>, and arrange for some changes to be automatically
  983. undone at the end of it, either explicit, or via a non-local exit (via
  984. die()). A I<block>-like construct is created by a pair of
  985. C<ENTER>/C<LEAVE> macros (see L<perlcall/EXAMPLE/"Returning a
  986. Scalar">).  Such a construct may be created specially for some
  987. important localized task, or an existing one (like boundaries of
  988. enclosing Perl subroutine/block, or an existing pair for freeing TMPs)
  989. may be used. (In the second case the overhead of additional
  990. localization must be almost negligible.) Note that any XSUB is
  991. automatically enclosed in an C<ENTER>/C<LEAVE> pair.
  992.  
  993. Inside such a I<pseudo-block> the following service is available:
  994.  
  995. =over
  996.  
  997. =item C<SAVEINT(int i)>
  998.  
  999. =item C<SAVEIV(IV i)>
  1000.  
  1001. =item C<SAVEI32(I32 i)>
  1002.  
  1003. =item C<SAVELONG(long i)>
  1004.  
  1005. These macros arrange things to restore the value of integer variable
  1006. C<i> at the end of enclosing I<pseudo-block>.
  1007.  
  1008. =item C<SAVESPTR(s)>
  1009.  
  1010. =item C<SAVEPPTR(p)>
  1011.  
  1012. These macros arrange things to restore the value of pointers C<s> and
  1013. C<p>. C<s> must be a pointer of a type which survives conversion to
  1014. C<SV*> and back, C<p> should be able to survive conversion to C<char*>
  1015. and back.
  1016.  
  1017. =item C<SAVEFREESV(SV *sv)>
  1018.  
  1019. The refcount of C<sv> would be decremented at the end of
  1020. I<pseudo-block>. This is similar to C<sv_2mortal>, which should (?) be
  1021. used instead.
  1022.  
  1023. =item C<SAVEFREEOP(OP *op)>
  1024.  
  1025. The C<OP *> is op_free()ed at the end of I<pseudo-block>.
  1026.  
  1027. =item C<SAVEFREEPV(p)>
  1028.  
  1029. The chunk of memory which is pointed to by C<p> is Safefree()ed at the
  1030. end of I<pseudo-block>.
  1031.  
  1032. =item C<SAVECLEARSV(SV *sv)>
  1033.  
  1034. Clears a slot in the current scratchpad which corresponds to C<sv> at
  1035. the end of I<pseudo-block>.
  1036.  
  1037. =item C<SAVEDELETE(HV *hv, char *key, I32 length)>
  1038.  
  1039. The key C<key> of C<hv> is deleted at the end of I<pseudo-block>. The
  1040. string pointed to by C<key> is Safefree()ed.  If one has a I<key> in
  1041. short-lived storage, the corresponding string may be reallocated like
  1042. this:
  1043.  
  1044.   SAVEDELETE(PL_defstash, savepv(tmpbuf), strlen(tmpbuf));
  1045.  
  1046. =item C<SAVEDESTRUCTOR(f,p)>
  1047.  
  1048. At the end of I<pseudo-block> the function C<f> is called with the
  1049. only argument (of type C<void*>) C<p>.
  1050.  
  1051. =item C<SAVESTACK_POS()>
  1052.  
  1053. The current offset on the Perl internal stack (cf. C<SP>) is restored
  1054. at the end of I<pseudo-block>.
  1055.  
  1056. =back
  1057.  
  1058. The following API list contains functions, thus one needs to
  1059. provide pointers to the modifiable data explicitly (either C pointers,
  1060. or Perlish C<GV *>s).  Where the above macros take C<int>, a similar 
  1061. function takes C<int *>.
  1062.  
  1063. =over
  1064.  
  1065. =item C<SV* save_scalar(GV *gv)>
  1066.  
  1067. Equivalent to Perl code C<local $gv>.
  1068.  
  1069. =item C<AV* save_ary(GV *gv)>
  1070.  
  1071. =item C<HV* save_hash(GV *gv)>
  1072.  
  1073. Similar to C<save_scalar>, but localize C<@gv> and C<%gv>.
  1074.  
  1075. =item C<void save_item(SV *item)>
  1076.  
  1077. Duplicates the current value of C<SV>, on the exit from the current
  1078. C<ENTER>/C<LEAVE> I<pseudo-block> will restore the value of C<SV>
  1079. using the stored value.
  1080.  
  1081. =item C<void save_list(SV **sarg, I32 maxsarg)>
  1082.  
  1083. A variant of C<save_item> which takes multiple arguments via an array
  1084. C<sarg> of C<SV*> of length C<maxsarg>.
  1085.  
  1086. =item C<SV* save_svref(SV **sptr)>
  1087.  
  1088. Similar to C<save_scalar>, but will reinstate a C<SV *>.
  1089.  
  1090. =item C<void save_aptr(AV **aptr)>
  1091.  
  1092. =item C<void save_hptr(HV **hptr)>
  1093.  
  1094. Similar to C<save_svref>, but localize C<AV *> and C<HV *>.
  1095.  
  1096. =back
  1097.  
  1098. The C<Alias> module implements localization of the basic types within the
  1099. I<caller's scope>.  People who are interested in how to localize things in
  1100. the containing scope should take a look there too.
  1101.  
  1102. =head1 Subroutines
  1103.  
  1104. =head2 XSUBs and the Argument Stack
  1105.  
  1106. The XSUB mechanism is a simple way for Perl programs to access C subroutines.
  1107. An XSUB routine will have a stack that contains the arguments from the Perl
  1108. program, and a way to map from the Perl data structures to a C equivalent.
  1109.  
  1110. The stack arguments are accessible through the C<ST(n)> macro, which returns
  1111. the C<n>'th stack argument.  Argument 0 is the first argument passed in the
  1112. Perl subroutine call.  These arguments are C<SV*>, and can be used anywhere
  1113. an C<SV*> is used.
  1114.  
  1115. Most of the time, output from the C routine can be handled through use of
  1116. the RETVAL and OUTPUT directives.  However, there are some cases where the
  1117. argument stack is not already long enough to handle all the return values.
  1118. An example is the POSIX tzname() call, which takes no arguments, but returns
  1119. two, the local time zone's standard and summer time abbreviations.
  1120.  
  1121. To handle this situation, the PPCODE directive is used and the stack is
  1122. extended using the macro:
  1123.  
  1124.     EXTEND(SP, num);
  1125.  
  1126. where C<SP> is the macro that represents the local copy of the stack pointer,
  1127. and C<num> is the number of elements the stack should be extended by.
  1128.  
  1129. Now that there is room on the stack, values can be pushed on it using the
  1130. macros to push IVs, doubles, strings, and SV pointers respectively:
  1131.  
  1132.     PUSHi(IV)
  1133.     PUSHn(double)
  1134.     PUSHp(char*, I32)
  1135.     PUSHs(SV*)
  1136.  
  1137. And now the Perl program calling C<tzname>, the two values will be assigned
  1138. as in:
  1139.  
  1140.     ($standard_abbrev, $summer_abbrev) = POSIX::tzname;
  1141.  
  1142. An alternate (and possibly simpler) method to pushing values on the stack is
  1143. to use the macros:
  1144.  
  1145.     XPUSHi(IV)
  1146.     XPUSHn(double)
  1147.     XPUSHp(char*, I32)
  1148.     XPUSHs(SV*)
  1149.  
  1150. These macros automatically adjust the stack for you, if needed.  Thus, you
  1151. do not need to call C<EXTEND> to extend the stack.
  1152.  
  1153. For more information, consult L<perlxs> and L<perlxstut>.
  1154.  
  1155. =head2 Calling Perl Routines from within C Programs
  1156.  
  1157. There are four routines that can be used to call a Perl subroutine from
  1158. within a C program.  These four are:
  1159.  
  1160.     I32  perl_call_sv(SV*, I32);
  1161.     I32  perl_call_pv(char*, I32);
  1162.     I32  perl_call_method(char*, I32);
  1163.     I32  perl_call_argv(char*, I32, register char**);
  1164.  
  1165. The routine most often used is C<perl_call_sv>.  The C<SV*> argument
  1166. contains either the name of the Perl subroutine to be called, or a
  1167. reference to the subroutine.  The second argument consists of flags
  1168. that control the context in which the subroutine is called, whether
  1169. or not the subroutine is being passed arguments, how errors should be
  1170. trapped, and how to treat return values.
  1171.  
  1172. All four routines return the number of arguments that the subroutine returned
  1173. on the Perl stack.
  1174.  
  1175. When using any of these routines (except C<perl_call_argv>), the programmer
  1176. must manipulate the Perl stack.  These include the following macros and
  1177. functions:
  1178.  
  1179.     dSP
  1180.     SP
  1181.     PUSHMARK()
  1182.     PUTBACK
  1183.     SPAGAIN
  1184.     ENTER
  1185.     SAVETMPS
  1186.     FREETMPS
  1187.     LEAVE
  1188.     XPUSH*()
  1189.     POP*()
  1190.  
  1191. For a detailed description of calling conventions from C to Perl,
  1192. consult L<perlcall>.
  1193.  
  1194. =head2 Memory Allocation
  1195.  
  1196. It is suggested that you use the version of malloc that is distributed
  1197. with Perl.  It keeps pools of various sizes of unallocated memory in
  1198. order to satisfy allocation requests more quickly.  However, on some
  1199. platforms, it may cause spurious malloc or free errors.
  1200.  
  1201.     New(x, pointer, number, type);
  1202.     Newc(x, pointer, number, type, cast);
  1203.     Newz(x, pointer, number, type);
  1204.  
  1205. These three macros are used to initially allocate memory.
  1206.  
  1207. The first argument C<x> was a "magic cookie" that was used to keep track
  1208. of who called the macro, to help when debugging memory problems.  However,
  1209. the current code makes no use of this feature (most Perl developers now
  1210. use run-time memory checkers), so this argument can be any number.
  1211.  
  1212. The second argument C<pointer> should be the name of a variable that will
  1213. point to the newly allocated memory.
  1214.  
  1215. The third and fourth arguments C<number> and C<type> specify how many of
  1216. the specified type of data structure should be allocated.  The argument
  1217. C<type> is passed to C<sizeof>.  The final argument to C<Newc>, C<cast>,
  1218. should be used if the C<pointer> argument is different from the C<type>
  1219. argument.
  1220.  
  1221. Unlike the C<New> and C<Newc> macros, the C<Newz> macro calls C<memzero>
  1222. to zero out all the newly allocated memory.
  1223.  
  1224.     Renew(pointer, number, type);
  1225.     Renewc(pointer, number, type, cast);
  1226.     Safefree(pointer)
  1227.  
  1228. These three macros are used to change a memory buffer size or to free a
  1229. piece of memory no longer needed.  The arguments to C<Renew> and C<Renewc>
  1230. match those of C<New> and C<Newc> with the exception of not needing the
  1231. "magic cookie" argument.
  1232.  
  1233.     Move(source, dest, number, type);
  1234.     Copy(source, dest, number, type);
  1235.     Zero(dest, number, type);
  1236.  
  1237. These three macros are used to move, copy, or zero out previously allocated
  1238. memory.  The C<source> and C<dest> arguments point to the source and
  1239. destination starting points.  Perl will move, copy, or zero out C<number>
  1240. instances of the size of the C<type> data structure (using the C<sizeof>
  1241. function).
  1242.  
  1243. =head2 PerlIO
  1244.  
  1245. The most recent development releases of Perl has been experimenting with
  1246. removing Perl's dependency on the "normal" standard I/O suite and allowing
  1247. other stdio implementations to be used.  This involves creating a new
  1248. abstraction layer that then calls whichever implementation of stdio Perl
  1249. was compiled with.  All XSUBs should now use the functions in the PerlIO
  1250. abstraction layer and not make any assumptions about what kind of stdio
  1251. is being used.
  1252.  
  1253. For a complete description of the PerlIO abstraction, consult L<perlapio>.
  1254.  
  1255. =head2 Putting a C value on Perl stack
  1256.  
  1257. A lot of opcodes (this is an elementary operation in the internal perl
  1258. stack machine) put an SV* on the stack. However, as an optimization
  1259. the corresponding SV is (usually) not recreated each time. The opcodes
  1260. reuse specially assigned SVs (I<target>s) which are (as a corollary)
  1261. not constantly freed/created.
  1262.  
  1263. Each of the targets is created only once (but see
  1264. L<Scratchpads and recursion> below), and when an opcode needs to put
  1265. an integer, a double, or a string on stack, it just sets the
  1266. corresponding parts of its I<target> and puts the I<target> on stack.
  1267.  
  1268. The macro to put this target on stack is C<PUSHTARG>, and it is
  1269. directly used in some opcodes, as well as indirectly in zillions of
  1270. others, which use it via C<(X)PUSH[pni]>.
  1271.  
  1272. =head2 Scratchpads
  1273.  
  1274. The question remains on when the SVs which are I<target>s for opcodes
  1275. are created. The answer is that they are created when the current unit --
  1276. a subroutine or a file (for opcodes for statements outside of
  1277. subroutines) -- is compiled. During this time a special anonymous Perl
  1278. array is created, which is called a scratchpad for the current
  1279. unit.
  1280.  
  1281. A scratchpad keeps SVs which are lexicals for the current unit and are
  1282. targets for opcodes. One can deduce that an SV lives on a scratchpad
  1283. by looking on its flags: lexicals have C<SVs_PADMY> set, and
  1284. I<target>s have C<SVs_PADTMP> set.
  1285.  
  1286. The correspondence between OPs and I<target>s is not 1-to-1. Different
  1287. OPs in the compile tree of the unit can use the same target, if this
  1288. would not conflict with the expected life of the temporary.
  1289.  
  1290. =head2 Scratchpads and recursion
  1291.  
  1292. In fact it is not 100% true that a compiled unit contains a pointer to
  1293. the scratchpad AV. In fact it contains a pointer to an AV of
  1294. (initially) one element, and this element is the scratchpad AV. Why do
  1295. we need an extra level of indirection?
  1296.  
  1297. The answer is B<recursion>, and maybe (sometime soon) B<threads>. Both
  1298. these can create several execution pointers going into the same
  1299. subroutine. For the subroutine-child not write over the temporaries
  1300. for the subroutine-parent (lifespan of which covers the call to the
  1301. child), the parent and the child should have different
  1302. scratchpads. (I<And> the lexicals should be separate anyway!)
  1303.  
  1304. So each subroutine is born with an array of scratchpads (of length 1).
  1305. On each entry to the subroutine it is checked that the current
  1306. depth of the recursion is not more than the length of this array, and
  1307. if it is, new scratchpad is created and pushed into the array.
  1308.  
  1309. The I<target>s on this scratchpad are C<undef>s, but they are already
  1310. marked with correct flags.
  1311.  
  1312. =head1 Compiled code
  1313.  
  1314. =head2 Code tree
  1315.  
  1316. Here we describe the internal form your code is converted to by
  1317. Perl. Start with a simple example:
  1318.  
  1319.   $a = $b + $c;
  1320.  
  1321. This is converted to a tree similar to this one:
  1322.  
  1323.              assign-to
  1324.            /           \
  1325.           +             $a
  1326.         /   \
  1327.       $b     $c
  1328.  
  1329. (but slightly more complicated).  This tree reflects the way Perl
  1330. parsed your code, but has nothing to do with the execution order.
  1331. There is an additional "thread" going through the nodes of the tree
  1332. which shows the order of execution of the nodes.  In our simplified
  1333. example above it looks like:
  1334.  
  1335.      $b ---> $c ---> + ---> $a ---> assign-to
  1336.  
  1337. But with the actual compile tree for C<$a = $b + $c> it is different:
  1338. some nodes I<optimized away>.  As a corollary, though the actual tree
  1339. contains more nodes than our simplified example, the execution order
  1340. is the same as in our example.
  1341.  
  1342. =head2 Examining the tree
  1343.  
  1344. If you have your perl compiled for debugging (usually done with C<-D
  1345. optimize=-g> on C<Configure> command line), you may examine the
  1346. compiled tree by specifying C<-Dx> on the Perl command line.  The
  1347. output takes several lines per node, and for C<$b+$c> it looks like
  1348. this:
  1349.  
  1350.     5           TYPE = add  ===> 6
  1351.                 TARG = 1
  1352.                 FLAGS = (SCALAR,KIDS)
  1353.                 {
  1354.                     TYPE = null  ===> (4)
  1355.                       (was rv2sv)
  1356.                     FLAGS = (SCALAR,KIDS)
  1357.                     {
  1358.     3                   TYPE = gvsv  ===> 4
  1359.                         FLAGS = (SCALAR)
  1360.                         GV = main::b
  1361.                     }
  1362.                 }
  1363.                 {
  1364.                     TYPE = null  ===> (5)
  1365.                       (was rv2sv)
  1366.                     FLAGS = (SCALAR,KIDS)
  1367.                     {
  1368.     4                   TYPE = gvsv  ===> 5
  1369.                         FLAGS = (SCALAR)
  1370.                         GV = main::c
  1371.                     }
  1372.                 }
  1373.  
  1374. This tree has 5 nodes (one per C<TYPE> specifier), only 3 of them are
  1375. not optimized away (one per number in the left column).  The immediate
  1376. children of the given node correspond to C<{}> pairs on the same level
  1377. of indentation, thus this listing corresponds to the tree:
  1378.  
  1379.                    add
  1380.                  /     \
  1381.                null    null
  1382.                 |       |
  1383.                gvsv    gvsv
  1384.  
  1385. The execution order is indicated by C<===E<gt>> marks, thus it is C<3
  1386. 4 5 6> (node C<6> is not included into above listing), i.e.,
  1387. C<gvsv gvsv add whatever>.
  1388.  
  1389. =head2 Compile pass 1: check routines
  1390.  
  1391. The tree is created by the I<pseudo-compiler> while yacc code feeds it
  1392. the constructions it recognizes. Since yacc works bottom-up, so does
  1393. the first pass of perl compilation.
  1394.  
  1395. What makes this pass interesting for perl developers is that some
  1396. optimization may be performed on this pass.  This is optimization by
  1397. so-called I<check routines>.  The correspondence between node names
  1398. and corresponding check routines is described in F<opcode.pl> (do not
  1399. forget to run C<make regen_headers> if you modify this file).
  1400.  
  1401. A check routine is called when the node is fully constructed except
  1402. for the execution-order thread.  Since at this time there are no
  1403. back-links to the currently constructed node, one can do most any
  1404. operation to the top-level node, including freeing it and/or creating
  1405. new nodes above/below it.
  1406.  
  1407. The check routine returns the node which should be inserted into the
  1408. tree (if the top-level node was not modified, check routine returns
  1409. its argument).
  1410.  
  1411. By convention, check routines have names C<ck_*>. They are usually
  1412. called from C<new*OP> subroutines (or C<convert>) (which in turn are
  1413. called from F<perly.y>).
  1414.  
  1415. =head2 Compile pass 1a: constant folding
  1416.  
  1417. Immediately after the check routine is called the returned node is
  1418. checked for being compile-time executable.  If it is (the value is
  1419. judged to be constant) it is immediately executed, and a I<constant>
  1420. node with the "return value" of the corresponding subtree is
  1421. substituted instead.  The subtree is deleted.
  1422.  
  1423. If constant folding was not performed, the execution-order thread is
  1424. created.
  1425.  
  1426. =head2 Compile pass 2: context propagation
  1427.  
  1428. When a context for a part of compile tree is known, it is propagated
  1429. down through the tree.  At this time the context can have 5 values
  1430. (instead of 2 for runtime context): void, boolean, scalar, list, and
  1431. lvalue.  In contrast with the pass 1 this pass is processed from top
  1432. to bottom: a node's context determines the context for its children.
  1433.  
  1434. Additional context-dependent optimizations are performed at this time.
  1435. Since at this moment the compile tree contains back-references (via
  1436. "thread" pointers), nodes cannot be free()d now.  To allow
  1437. optimized-away nodes at this stage, such nodes are null()ified instead
  1438. of free()ing (i.e. their type is changed to OP_NULL).
  1439.  
  1440. =head2 Compile pass 3: peephole optimization
  1441.  
  1442. After the compile tree for a subroutine (or for an C<eval> or a file)
  1443. is created, an additional pass over the code is performed. This pass
  1444. is neither top-down or bottom-up, but in the execution order (with
  1445. additional complications for conditionals).  These optimizations are
  1446. done in the subroutine peep().  Optimizations performed at this stage
  1447. are subject to the same restrictions as in the pass 2.
  1448.  
  1449. =head1 API LISTING
  1450.  
  1451. This is a listing of functions, macros, flags, and variables that may be
  1452. useful to extension writers or that may be found while reading other
  1453. extensions.
  1454.  
  1455. Note that all Perl API global variables must be referenced with the C<PL_>
  1456. prefix.  Some macros are provided for compatibility with the older,
  1457. unadorned names, but this support will be removed in a future release.
  1458.  
  1459. It is strongly recommended that all Perl API functions that don't begin
  1460. with C<perl> be referenced with an explicit C<Perl_> prefix.
  1461.  
  1462. The sort order of the listing is case insensitive, with any
  1463. occurrences of '_' ignored for the the purpose of sorting.
  1464.  
  1465. =over 8
  1466.  
  1467. =item av_clear
  1468.  
  1469. Clears an array, making it empty.  Does not free the memory used by the
  1470. array itself.
  1471.  
  1472.     void    av_clear (AV* ar)
  1473.  
  1474. =item av_extend
  1475.  
  1476. Pre-extend an array.  The C<key> is the index to which the array should be
  1477. extended.
  1478.  
  1479.     void    av_extend (AV* ar, I32 key)
  1480.  
  1481. =item av_fetch
  1482.  
  1483. Returns the SV at the specified index in the array.  The C<key> is the
  1484. index.  If C<lval> is set then the fetch will be part of a store.  Check
  1485. that the return value is non-null before dereferencing it to a C<SV*>.
  1486.  
  1487. See L<Understanding the Magic of Tied Hashes and Arrays> for more
  1488. information on how to use this function on tied arrays.
  1489.  
  1490.     SV**    av_fetch (AV* ar, I32 key, I32 lval)
  1491.  
  1492. =item AvFILL
  1493.  
  1494. Same as C<av_len()>.  Deprecated, use C<av_len()> instead.
  1495.  
  1496. =item av_len
  1497.  
  1498. Returns the highest index in the array.  Returns -1 if the array is empty.
  1499.  
  1500.     I32    av_len (AV* ar)
  1501.  
  1502. =item av_make
  1503.  
  1504. Creates a new AV and populates it with a list of SVs.  The SVs are copied
  1505. into the array, so they may be freed after the call to av_make.  The new AV
  1506. will have a reference count of 1.
  1507.  
  1508.     AV*    av_make (I32 size, SV** svp)
  1509.  
  1510. =item av_pop
  1511.  
  1512. Pops an SV off the end of the array.  Returns C<&PL_sv_undef> if the array is
  1513. empty.
  1514.  
  1515.     SV*    av_pop (AV* ar)
  1516.  
  1517. =item av_push
  1518.  
  1519. Pushes an SV onto the end of the array.  The array will grow automatically
  1520. to accommodate the addition.
  1521.  
  1522.     void    av_push (AV* ar, SV* val)
  1523.  
  1524. =item av_shift
  1525.  
  1526. Shifts an SV off the beginning of the array.
  1527.  
  1528.     SV*    av_shift (AV* ar)
  1529.  
  1530. =item av_store
  1531.  
  1532. Stores an SV in an array.  The array index is specified as C<key>.  The
  1533. return value will be NULL if the operation failed or if the value did not
  1534. need to be actually stored within the array (as in the case of tied arrays).
  1535. Otherwise it can be dereferenced to get the original C<SV*>.  Note that the
  1536. caller is responsible for suitably incrementing the reference count of C<val>
  1537. before the call, and decrementing it if the function returned NULL.
  1538.  
  1539. See L<Understanding the Magic of Tied Hashes and Arrays> for more
  1540. information on how to use this function on tied arrays.
  1541.  
  1542.     SV**    av_store (AV* ar, I32 key, SV* val)
  1543.  
  1544. =item av_undef
  1545.  
  1546. Undefines the array.  Frees the memory used by the array itself.
  1547.  
  1548.     void    av_undef (AV* ar)
  1549.  
  1550. =item av_unshift
  1551.  
  1552. Unshift the given number of C<undef> values onto the beginning of the
  1553. array.  The array will grow automatically to accommodate the addition.
  1554. You must then use C<av_store> to assign values to these new elements.
  1555.  
  1556.     void    av_unshift (AV* ar, I32 num)
  1557.  
  1558. =item CLASS
  1559.  
  1560. Variable which is setup by C<xsubpp> to indicate the class name for a C++ XS
  1561. constructor.  This is always a C<char*>.  See C<THIS> and
  1562. L<perlxs/"Using XS With C++">.
  1563.  
  1564. =item Copy
  1565.  
  1566. The XSUB-writer's interface to the C C<memcpy> function.  The C<s> is the
  1567. source, C<d> is the destination, C<n> is the number of items, and C<t> is
  1568. the type.  May fail on overlapping copies.  See also C<Move>.
  1569.  
  1570.     void    Copy( s, d, n, t )
  1571.  
  1572. =item croak
  1573.  
  1574. This is the XSUB-writer's interface to Perl's C<die> function.  Use this
  1575. function the same way you use the C C<printf> function.  See C<warn>.
  1576.  
  1577. =item CvSTASH
  1578.  
  1579. Returns the stash of the CV.
  1580.  
  1581.     HV*    CvSTASH( SV* sv )
  1582.  
  1583. =item PL_DBsingle
  1584.  
  1585. When Perl is run in debugging mode, with the B<-d> switch, this SV is a
  1586. boolean which indicates whether subs are being single-stepped.
  1587. Single-stepping is automatically turned on after every step.  This is the C
  1588. variable which corresponds to Perl's $DB::single variable.  See C<PL_DBsub>.
  1589.  
  1590. =item PL_DBsub
  1591.  
  1592. When Perl is run in debugging mode, with the B<-d> switch, this GV contains
  1593. the SV which holds the name of the sub being debugged.  This is the C
  1594. variable which corresponds to Perl's $DB::sub variable.  See C<PL_DBsingle>.
  1595. The sub name can be found by
  1596.  
  1597.     SvPV( GvSV( PL_DBsub ), PL_na )
  1598.  
  1599. =item PL_DBtrace
  1600.  
  1601. Trace variable used when Perl is run in debugging mode, with the B<-d>
  1602. switch.  This is the C variable which corresponds to Perl's $DB::trace
  1603. variable.  See C<PL_DBsingle>.
  1604.  
  1605. =item dMARK
  1606.  
  1607. Declare a stack marker variable, C<mark>, for the XSUB.  See C<MARK> and
  1608. C<dORIGMARK>.
  1609.  
  1610. =item dORIGMARK
  1611.  
  1612. Saves the original stack mark for the XSUB.  See C<ORIGMARK>.
  1613.  
  1614. =item PL_dowarn
  1615.  
  1616. The C variable which corresponds to Perl's $^W warning variable.
  1617.  
  1618. =item dSP
  1619.  
  1620. Declares a local copy of perl's stack pointer for the XSUB, available via
  1621. the C<SP> macro.  See C<SP>.
  1622.  
  1623. =item dXSARGS
  1624.  
  1625. Sets up stack and mark pointers for an XSUB, calling dSP and dMARK.  This is
  1626. usually handled automatically by C<xsubpp>.  Declares the C<items> variable
  1627. to indicate the number of items on the stack.
  1628.  
  1629. =item dXSI32
  1630.  
  1631. Sets up the C<ix> variable for an XSUB which has aliases.  This is usually
  1632. handled automatically by C<xsubpp>.
  1633.  
  1634. =item do_binmode
  1635.  
  1636. Switches filehandle to binmode.  C<iotype> is what C<IoTYPE(io)> would
  1637. contain.
  1638.  
  1639.     do_binmode(fp, iotype, TRUE);
  1640.  
  1641. =item ENTER
  1642.  
  1643. Opening bracket on a callback.  See C<LEAVE> and L<perlcall>.
  1644.  
  1645.     ENTER;
  1646.  
  1647. =item EXTEND
  1648.  
  1649. Used to extend the argument stack for an XSUB's return values.
  1650.  
  1651.     EXTEND( sp, int x )
  1652.  
  1653. =item fbm_compile
  1654.  
  1655. Analyses the string in order to make fast searches on it using fbm_instr() --
  1656. the Boyer-Moore algorithm.
  1657.  
  1658.     void    fbm_compile(SV* sv, U32 flags)
  1659.  
  1660. =item fbm_instr
  1661.  
  1662. Returns the location of the SV in the string delimited by C<str> and
  1663. C<strend>.  It returns C<Nullch> if the string can't be found.  The
  1664. C<sv> does not have to be fbm_compiled, but the search will not be as
  1665. fast then.
  1666.  
  1667.     char*    fbm_instr(char *str, char *strend, SV *sv, U32 flags)
  1668.  
  1669. =item FREETMPS
  1670.  
  1671. Closing bracket for temporaries on a callback.  See C<SAVETMPS> and
  1672. L<perlcall>.
  1673.  
  1674.     FREETMPS;
  1675.  
  1676. =item G_ARRAY
  1677.  
  1678. Used to indicate array context.  See C<GIMME_V>, C<GIMME> and L<perlcall>.
  1679.  
  1680. =item G_DISCARD
  1681.  
  1682. Indicates that arguments returned from a callback should be discarded.  See
  1683. L<perlcall>.
  1684.  
  1685. =item G_EVAL
  1686.  
  1687. Used to force a Perl C<eval> wrapper around a callback.  See L<perlcall>.
  1688.  
  1689. =item GIMME
  1690.  
  1691. A backward-compatible version of C<GIMME_V> which can only return
  1692. C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>.
  1693.  
  1694. =item GIMME_V
  1695.  
  1696. The XSUB-writer's equivalent to Perl's C<wantarray>.  Returns
  1697. C<G_VOID>, C<G_SCALAR> or C<G_ARRAY> for void, scalar or array
  1698. context, respectively.
  1699.  
  1700. =item G_NOARGS
  1701.  
  1702. Indicates that no arguments are being sent to a callback.  See L<perlcall>.
  1703.  
  1704. =item G_SCALAR
  1705.  
  1706. Used to indicate scalar context.  See C<GIMME_V>, C<GIMME>, and L<perlcall>.
  1707.  
  1708. =item gv_fetchmeth
  1709.  
  1710. Returns the glob with the given C<name> and a defined subroutine or
  1711. C<NULL>.  The glob lives in the given C<stash>, or in the stashes
  1712. accessible via @ISA and @UNIVERSAL.
  1713.  
  1714. The argument C<level> should be either 0 or -1.  If C<level==0>, as a
  1715. side-effect creates a glob with the given C<name> in the given
  1716. C<stash> which in the case of success contains an alias for the
  1717. subroutine, and sets up caching info for this glob.  Similarly for all
  1718. the searched stashes.
  1719.  
  1720. This function grants C<"SUPER"> token as a postfix of the stash name.
  1721.  
  1722. The GV returned from C<gv_fetchmeth> may be a method cache entry,
  1723. which is not visible to Perl code.  So when calling C<perl_call_sv>,
  1724. you should not use the GV directly; instead, you should use the
  1725. method's CV, which can be obtained from the GV with the C<GvCV> macro.
  1726.  
  1727.         GV*     gv_fetchmeth (HV* stash, char* name, STRLEN len, I32 level)
  1728.  
  1729. =item gv_fetchmethod
  1730.  
  1731. =item gv_fetchmethod_autoload
  1732.  
  1733. Returns the glob which contains the subroutine to call to invoke the
  1734. method on the C<stash>.  In fact in the presense of autoloading this may
  1735. be the glob for "AUTOLOAD".  In this case the corresponding variable
  1736. $AUTOLOAD is already setup.
  1737.  
  1738. The third parameter of C<gv_fetchmethod_autoload> determines whether AUTOLOAD
  1739. lookup is performed if the given method is not present: non-zero means
  1740. yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.  Calling
  1741. C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload> with a
  1742. non-zero C<autoload> parameter.
  1743.  
  1744. These functions grant C<"SUPER"> token as a prefix of the method name.
  1745.  
  1746. Note that if you want to keep the returned glob for a long time, you
  1747. need to check for it being "AUTOLOAD", since at the later time the call
  1748. may load a different subroutine due to $AUTOLOAD changing its value.
  1749. Use the glob created via a side effect to do this.
  1750.  
  1751. These functions have the same side-effects and as C<gv_fetchmeth> with
  1752. C<level==0>.  C<name> should be writable if contains C<':'> or C<'\''>.
  1753. The warning against passing the GV returned by C<gv_fetchmeth> to
  1754. C<perl_call_sv> apply equally to these functions.
  1755.  
  1756.         GV*     gv_fetchmethod (HV* stash, char* name)
  1757.         GV*     gv_fetchmethod_autoload (HV* stash, char* name, I32 autoload)
  1758.  
  1759. =item G_VOID
  1760.  
  1761. Used to indicate void context.  See C<GIMME_V> and L<perlcall>.
  1762.  
  1763. =item gv_stashpv
  1764.  
  1765. Returns a pointer to the stash for a specified package.  If C<create> is set
  1766. then the package will be created if it does not already exist.  If C<create>
  1767. is not set and the package does not exist then NULL is returned.
  1768.  
  1769.     HV*    gv_stashpv (char* name, I32 create)
  1770.  
  1771. =item gv_stashsv
  1772.  
  1773. Returns a pointer to the stash for a specified package.  See C<gv_stashpv>.
  1774.  
  1775.     HV*    gv_stashsv (SV* sv, I32 create)
  1776.  
  1777. =item GvSV
  1778.  
  1779. Return the SV from the GV.
  1780.  
  1781. =item HEf_SVKEY
  1782.  
  1783. This flag, used in the length slot of hash entries and magic
  1784. structures, specifies the structure contains a C<SV*> pointer where a
  1785. C<char*> pointer is to be expected. (For information only--not to be used).
  1786.  
  1787. =item HeHASH
  1788.  
  1789. Returns the computed hash stored in the hash entry.
  1790.  
  1791.     U32    HeHASH(HE* he)
  1792.  
  1793. =item HeKEY
  1794.  
  1795. Returns the actual pointer stored in the key slot of the hash entry.
  1796. The pointer may be either C<char*> or C<SV*>, depending on the value of
  1797. C<HeKLEN()>.  Can be assigned to.  The C<HePV()> or C<HeSVKEY()> macros
  1798. are usually preferable for finding the value of a key.
  1799.  
  1800.     char*    HeKEY(HE* he)
  1801.  
  1802. =item HeKLEN
  1803.  
  1804. If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry
  1805. holds an C<SV*> key.  Otherwise, holds the actual length of the key.
  1806. Can be assigned to. The C<HePV()> macro is usually preferable for finding
  1807. key lengths.
  1808.  
  1809.     int    HeKLEN(HE* he)
  1810.  
  1811. =item HePV
  1812.  
  1813. Returns the key slot of the hash entry as a C<char*> value, doing any
  1814. necessary dereferencing of possibly C<SV*> keys.  The length of
  1815. the string is placed in C<len> (this is a macro, so do I<not> use
  1816. C<&len>).  If you do not care about what the length of the key is,
  1817. you may use the global variable C<PL_na>.  Remember though, that hash
  1818. keys in perl are free to contain embedded nulls, so using C<strlen()>
  1819. or similar is not a good way to find the length of hash keys.
  1820. This is very similar to the C<SvPV()> macro described elsewhere in
  1821. this document.
  1822.  
  1823.     char*    HePV(HE* he, STRLEN len)
  1824.  
  1825. =item HeSVKEY
  1826.  
  1827. Returns the key as an C<SV*>, or C<Nullsv> if the hash entry
  1828. does not contain an C<SV*> key.
  1829.  
  1830.     HeSVKEY(HE* he)
  1831.  
  1832. =item HeSVKEY_force
  1833.  
  1834. Returns the key as an C<SV*>.  Will create and return a temporary
  1835. mortal C<SV*> if the hash entry contains only a C<char*> key.
  1836.  
  1837.     HeSVKEY_force(HE* he)
  1838.  
  1839. =item HeSVKEY_set
  1840.  
  1841. Sets the key to a given C<SV*>, taking care to set the appropriate flags
  1842. to indicate the presence of an C<SV*> key, and returns the same C<SV*>.
  1843.  
  1844.     HeSVKEY_set(HE* he, SV* sv)
  1845.  
  1846. =item HeVAL
  1847.  
  1848. Returns the value slot (type C<SV*>) stored in the hash entry.
  1849.  
  1850.     HeVAL(HE* he)
  1851.  
  1852. =item hv_clear
  1853.  
  1854. Clears a hash, making it empty.
  1855.  
  1856.     void    hv_clear (HV* tb)
  1857.  
  1858. =item hv_delayfree_ent
  1859.  
  1860. Releases a hash entry, such as while iterating though the hash, but
  1861. delays actual freeing of key and value until the end of the current
  1862. statement (or thereabouts) with C<sv_2mortal>.  See C<hv_iternext>
  1863. and C<hv_free_ent>.
  1864.  
  1865.     void    hv_delayfree_ent (HV* hv, HE* entry)
  1866.  
  1867. =item hv_delete
  1868.  
  1869. Deletes a key/value pair in the hash.  The value SV is removed from the hash
  1870. and returned to the caller.  The C<klen> is the length of the key.  The
  1871. C<flags> value will normally be zero; if set to G_DISCARD then NULL will be
  1872. returned.
  1873.  
  1874.     SV*    hv_delete (HV* tb, char* key, U32 klen, I32 flags)
  1875.  
  1876. =item hv_delete_ent
  1877.  
  1878. Deletes a key/value pair in the hash.  The value SV is removed from the hash
  1879. and returned to the caller.  The C<flags> value will normally be zero; if set
  1880. to G_DISCARD then NULL will be returned.  C<hash> can be a valid precomputed
  1881. hash value, or 0 to ask for it to be computed.
  1882.  
  1883.     SV*     hv_delete_ent (HV* tb, SV* key, I32 flags, U32 hash)
  1884.  
  1885. =item hv_exists
  1886.  
  1887. Returns a boolean indicating whether the specified hash key exists.  The
  1888. C<klen> is the length of the key.
  1889.  
  1890.     bool    hv_exists (HV* tb, char* key, U32 klen)
  1891.  
  1892. =item hv_exists_ent
  1893.  
  1894. Returns a boolean indicating whether the specified hash key exists. C<hash>
  1895. can be a valid precomputed hash value, or 0 to ask for it to be computed.
  1896.  
  1897.     bool    hv_exists_ent (HV* tb, SV* key, U32 hash)
  1898.  
  1899. =item hv_fetch
  1900.  
  1901. Returns the SV which corresponds to the specified key in the hash.  The
  1902. C<klen> is the length of the key.  If C<lval> is set then the fetch will be
  1903. part of a store.  Check that the return value is non-null before
  1904. dereferencing it to a C<SV*>.
  1905.  
  1906. See L<Understanding the Magic of Tied Hashes and Arrays> for more
  1907. information on how to use this function on tied hashes.
  1908.  
  1909.     SV**    hv_fetch (HV* tb, char* key, U32 klen, I32 lval)
  1910.  
  1911. =item hv_fetch_ent
  1912.  
  1913. Returns the hash entry which corresponds to the specified key in the hash.
  1914. C<hash> must be a valid precomputed hash number for the given C<key>, or
  1915. 0 if you want the function to compute it.  IF C<lval> is set then the
  1916. fetch will be part of a store.  Make sure the return value is non-null
  1917. before accessing it.  The return value when C<tb> is a tied hash
  1918. is a pointer to a static location, so be sure to make a copy of the
  1919. structure if you need to store it somewhere.
  1920.  
  1921. See L<Understanding the Magic of Tied Hashes and Arrays> for more
  1922. information on how to use this function on tied hashes.
  1923.  
  1924.     HE*     hv_fetch_ent  (HV* tb, SV* key, I32 lval, U32 hash)
  1925.  
  1926. =item hv_free_ent
  1927.  
  1928. Releases a hash entry, such as while iterating though the hash.  See
  1929. C<hv_iternext> and C<hv_delayfree_ent>.
  1930.  
  1931.     void    hv_free_ent (HV* hv, HE* entry)
  1932.  
  1933. =item hv_iterinit
  1934.  
  1935. Prepares a starting point to traverse a hash table.
  1936.  
  1937.     I32    hv_iterinit (HV* tb)
  1938.  
  1939. Returns the number of keys in the hash (i.e. the same as C<HvKEYS(tb)>).
  1940. The return value is currently only meaningful for hashes without tie
  1941. magic.
  1942.  
  1943. NOTE: Before version 5.004_65, C<hv_iterinit> used to return the number
  1944. of hash buckets that happen to be in use.  If you still need that
  1945. esoteric value, you can get it through the macro C<HvFILL(tb)>.
  1946.  
  1947. =item hv_iterkey
  1948.  
  1949. Returns the key from the current position of the hash iterator.  See
  1950. C<hv_iterinit>.
  1951.  
  1952.     char*    hv_iterkey (HE* entry, I32* retlen)
  1953.  
  1954. =item hv_iterkeysv
  1955.  
  1956. Returns the key as an C<SV*> from the current position of the hash
  1957. iterator.  The return value will always be a mortal copy of the
  1958. key.  Also see C<hv_iterinit>.
  1959.  
  1960.     SV*     hv_iterkeysv  (HE* entry)
  1961.  
  1962. =item hv_iternext
  1963.  
  1964. Returns entries from a hash iterator.  See C<hv_iterinit>.
  1965.  
  1966.     HE*    hv_iternext (HV* tb)
  1967.  
  1968. =item hv_iternextsv
  1969.  
  1970. Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
  1971. operation.
  1972.  
  1973.     SV*    hv_iternextsv (HV* hv, char** key, I32* retlen)
  1974.  
  1975. =item hv_iterval
  1976.  
  1977. Returns the value from the current position of the hash iterator.  See
  1978. C<hv_iterkey>.
  1979.  
  1980.     SV*    hv_iterval (HV* tb, HE* entry)
  1981.  
  1982. =item hv_magic
  1983.  
  1984. Adds magic to a hash.  See C<sv_magic>.
  1985.  
  1986.     void    hv_magic (HV* hv, GV* gv, int how)
  1987.  
  1988. =item HvNAME
  1989.  
  1990. Returns the package name of a stash.  See C<SvSTASH>, C<CvSTASH>.
  1991.  
  1992.     char*    HvNAME (HV* stash)
  1993.  
  1994. =item hv_store
  1995.  
  1996. Stores an SV in a hash.  The hash key is specified as C<key> and C<klen> is
  1997. the length of the key.  The C<hash> parameter is the precomputed hash
  1998. value; if it is zero then Perl will compute it.  The return value will be
  1999. NULL if the operation failed or if the value did not need to be actually
  2000. stored within the hash (as in the case of tied hashes).  Otherwise it can
  2001. be dereferenced to get the original C<SV*>.  Note that the caller is
  2002. responsible for suitably incrementing the reference count of C<val>
  2003. before the call, and decrementing it if the function returned NULL.
  2004.  
  2005. See L<Understanding the Magic of Tied Hashes and Arrays> for more
  2006. information on how to use this function on tied hashes.
  2007.  
  2008.     SV**    hv_store (HV* tb, char* key, U32 klen, SV* val, U32 hash)
  2009.  
  2010. =item hv_store_ent
  2011.  
  2012. Stores C<val> in a hash.  The hash key is specified as C<key>.  The C<hash>
  2013. parameter is the precomputed hash value; if it is zero then Perl will
  2014. compute it.  The return value is the new hash entry so created.  It will be
  2015. NULL if the operation failed or if the value did not need to be actually
  2016. stored within the hash (as in the case of tied hashes).  Otherwise the
  2017. contents of the return value can be accessed using the C<He???> macros
  2018. described here.  Note that the caller is responsible for suitably
  2019. incrementing the reference count of C<val> before the call, and decrementing
  2020. it if the function returned NULL.
  2021.  
  2022. See L<Understanding the Magic of Tied Hashes and Arrays> for more
  2023. information on how to use this function on tied hashes.
  2024.  
  2025.     HE*     hv_store_ent  (HV* tb, SV* key, SV* val, U32 hash)
  2026.  
  2027. =item hv_undef
  2028.  
  2029. Undefines the hash.
  2030.  
  2031.     void    hv_undef (HV* tb)
  2032.  
  2033. =item isALNUM
  2034.  
  2035. Returns a boolean indicating whether the C C<char> is an ascii alphanumeric
  2036. character or digit.
  2037.  
  2038.     int    isALNUM (char c)
  2039.  
  2040. =item isALPHA
  2041.  
  2042. Returns a boolean indicating whether the C C<char> is an ascii alphabetic
  2043. character.
  2044.  
  2045.     int    isALPHA (char c)
  2046.  
  2047. =item isDIGIT
  2048.  
  2049. Returns a boolean indicating whether the C C<char> is an ascii digit.
  2050.  
  2051.     int    isDIGIT (char c)
  2052.  
  2053. =item isLOWER
  2054.  
  2055. Returns a boolean indicating whether the C C<char> is a lowercase character.
  2056.  
  2057.     int    isLOWER (char c)
  2058.  
  2059. =item isSPACE
  2060.  
  2061. Returns a boolean indicating whether the C C<char> is whitespace.
  2062.  
  2063.     int    isSPACE (char c)
  2064.  
  2065. =item isUPPER
  2066.  
  2067. Returns a boolean indicating whether the C C<char> is an uppercase character.
  2068.  
  2069.     int    isUPPER (char c)
  2070.  
  2071. =item items
  2072.  
  2073. Variable which is setup by C<xsubpp> to indicate the number of items on the
  2074. stack.  See L<perlxs/"Variable-length Parameter Lists">.
  2075.  
  2076. =item ix
  2077.  
  2078. Variable which is setup by C<xsubpp> to indicate which of an XSUB's aliases
  2079. was used to invoke it.  See L<perlxs/"The ALIAS: Keyword">.
  2080.  
  2081. =item LEAVE
  2082.  
  2083. Closing bracket on a callback.  See C<ENTER> and L<perlcall>.
  2084.  
  2085.     LEAVE;
  2086.  
  2087. =item looks_like_number
  2088.  
  2089. Test if an the content of an SV looks like a number (or is a number).
  2090.  
  2091.     int    looks_like_number(SV*)
  2092.  
  2093.  
  2094. =item MARK
  2095.  
  2096. Stack marker variable for the XSUB.  See C<dMARK>.
  2097.  
  2098. =item mg_clear
  2099.  
  2100. Clear something magical that the SV represents.  See C<sv_magic>.
  2101.  
  2102.     int    mg_clear (SV* sv)
  2103.  
  2104. =item mg_copy
  2105.  
  2106. Copies the magic from one SV to another.  See C<sv_magic>.
  2107.  
  2108.     int    mg_copy (SV *, SV *, char *, STRLEN)
  2109.  
  2110. =item mg_find
  2111.  
  2112. Finds the magic pointer for type matching the SV.  See C<sv_magic>.
  2113.  
  2114.     MAGIC*    mg_find (SV* sv, int type)
  2115.  
  2116. =item mg_free
  2117.  
  2118. Free any magic storage used by the SV.  See C<sv_magic>.
  2119.  
  2120.     int    mg_free (SV* sv)
  2121.  
  2122. =item mg_get
  2123.  
  2124. Do magic after a value is retrieved from the SV.  See C<sv_magic>.
  2125.  
  2126.     int    mg_get (SV* sv)
  2127.  
  2128. =item mg_len
  2129.  
  2130. Report on the SV's length.  See C<sv_magic>.
  2131.  
  2132.     U32    mg_len (SV* sv)
  2133.  
  2134. =item mg_magical
  2135.  
  2136. Turns on the magical status of an SV.  See C<sv_magic>.
  2137.  
  2138.     void    mg_magical (SV* sv)
  2139.  
  2140. =item mg_set
  2141.  
  2142. Do magic after a value is assigned to the SV.  See C<sv_magic>.
  2143.  
  2144.     int    mg_set (SV* sv)
  2145.  
  2146. =item Move
  2147.  
  2148. The XSUB-writer's interface to the C C<memmove> function.  The C<s> is the
  2149. source, C<d> is the destination, C<n> is the number of items, and C<t> is
  2150. the type.  Can do overlapping moves.  See also C<Copy>.
  2151.  
  2152.     void    Move( s, d, n, t )
  2153.  
  2154. =item PL_na
  2155.  
  2156. A variable which may be used with C<SvPV> to tell Perl to calculate the
  2157. string length.
  2158.  
  2159. =item New
  2160.  
  2161. The XSUB-writer's interface to the C C<malloc> function.
  2162.  
  2163.     void*    New( x, void *ptr, int size, type )
  2164.  
  2165. =item newAV
  2166.  
  2167. Creates a new AV.  The reference count is set to 1.
  2168.  
  2169.     AV*    newAV (void)
  2170.  
  2171. =item Newc
  2172.  
  2173. The XSUB-writer's interface to the C C<malloc> function, with cast.
  2174.  
  2175.     void*    Newc( x, void *ptr, int size, type, cast )
  2176.  
  2177. =item newCONSTSUB
  2178.  
  2179. Creates a constant sub equivalent to Perl C<sub FOO () { 123 }>
  2180. which is eligible for inlining at compile-time.
  2181.  
  2182.     void    newCONSTSUB(HV* stash, char* name, SV* sv)
  2183.  
  2184. =item newHV
  2185.  
  2186. Creates a new HV.  The reference count is set to 1.
  2187.  
  2188.     HV*    newHV (void)
  2189.  
  2190. =item newRV_inc
  2191.  
  2192. Creates an RV wrapper for an SV.  The reference count for the original SV is
  2193. incremented.
  2194.  
  2195.     SV*    newRV_inc (SV* ref)
  2196.  
  2197. For historical reasons, "newRV" is a synonym for "newRV_inc".
  2198.  
  2199. =item newRV_noinc
  2200.  
  2201. Creates an RV wrapper for an SV.  The reference count for the original
  2202. SV is B<not> incremented.
  2203.  
  2204.     SV*     newRV_noinc (SV* ref)
  2205.  
  2206. =item NEWSV
  2207.  
  2208. Creates a new SV.  A non-zero C<len> parameter indicates the number of
  2209. bytes of preallocated string space the SV should have.  An extra byte
  2210. for a tailing NUL is also reserved.  (SvPOK is not set for the SV even
  2211. if string space is allocated.)  The reference count for the new SV is
  2212. set to 1.  C<id> is an integer id between 0 and 1299 (used to identify
  2213. leaks).
  2214.  
  2215.     SV*    NEWSV (int id, STRLEN len)
  2216.  
  2217. =item newSViv
  2218.  
  2219. Creates a new SV and copies an integer into it.  The reference count for the
  2220. SV is set to 1.
  2221.  
  2222.     SV*    newSViv (IV i)
  2223.  
  2224. =item newSVnv
  2225.  
  2226. Creates a new SV and copies a double into it.  The reference count for the
  2227. SV is set to 1.
  2228.  
  2229.     SV*    newSVnv (NV i)
  2230.  
  2231. =item newSVpv
  2232.  
  2233. Creates a new SV and copies a string into it.  The reference count for the
  2234. SV is set to 1.  If C<len> is zero then Perl will compute the length.
  2235.  
  2236.     SV*    newSVpv (char* s, STRLEN len)
  2237.  
  2238. =item newSVpvf
  2239.  
  2240. Creates a new SV an initialize it with the string formatted like
  2241. C<sprintf>.
  2242.  
  2243.     SV*     newSVpvf(const char* pat, ...);
  2244.  
  2245. =item newSVpvn
  2246.  
  2247. Creates a new SV and copies a string into it.  The reference count for the
  2248. SV is set to 1.  If C<len> is zero then Perl will create a zero length 
  2249. string.
  2250.  
  2251.     SV*    newSVpvn (char* s, STRLEN len)
  2252.  
  2253. =item newSVrv
  2254.  
  2255. Creates a new SV for the RV, C<rv>, to point to.  If C<rv> is not an RV then
  2256. it will be upgraded to one.  If C<classname> is non-null then the new SV will
  2257. be blessed in the specified package.  The new SV is returned and its
  2258. reference count is 1.
  2259.  
  2260.     SV*    newSVrv (SV* rv, char* classname)
  2261.  
  2262. =item newSVsv
  2263.  
  2264. Creates a new SV which is an exact duplicate of the original SV.
  2265.  
  2266.     SV*    newSVsv (SV* old)
  2267.  
  2268. =item newXS
  2269.  
  2270. Used by C<xsubpp> to hook up XSUBs as Perl subs.
  2271.  
  2272. =item newXSproto
  2273.  
  2274. Used by C<xsubpp> to hook up XSUBs as Perl subs.  Adds Perl prototypes to
  2275. the subs.
  2276.  
  2277. =item Newz
  2278.  
  2279. The XSUB-writer's interface to the C C<malloc> function.  The allocated
  2280. memory is zeroed with C<memzero>.
  2281.  
  2282.     void*    Newz( x, void *ptr, int size, type )
  2283.  
  2284. =item Nullav
  2285.  
  2286. Null AV pointer.
  2287.  
  2288. =item Nullch
  2289.  
  2290. Null character pointer.
  2291.  
  2292. =item Nullcv
  2293.  
  2294. Null CV pointer.
  2295.  
  2296. =item Nullhv
  2297.  
  2298. Null HV pointer.
  2299.  
  2300. =item Nullsv
  2301.  
  2302. Null SV pointer.
  2303.  
  2304. =item ORIGMARK
  2305.  
  2306. The original stack mark for the XSUB.  See C<dORIGMARK>.
  2307.  
  2308. =item perl_alloc
  2309.  
  2310. Allocates a new Perl interpreter.  See L<perlembed>.
  2311.  
  2312. =item perl_call_argv
  2313.  
  2314. Performs a callback to the specified Perl sub.  See L<perlcall>.
  2315.  
  2316.     I32    perl_call_argv (char* subname, I32 flags, char** argv)
  2317.  
  2318. =item perl_call_method
  2319.  
  2320. Performs a callback to the specified Perl method.  The blessed object must
  2321. be on the stack.  See L<perlcall>.
  2322.  
  2323.     I32    perl_call_method (char* methname, I32 flags)
  2324.  
  2325. =item perl_call_pv
  2326.  
  2327. Performs a callback to the specified Perl sub.  See L<perlcall>.
  2328.  
  2329.     I32    perl_call_pv (char* subname, I32 flags)
  2330.  
  2331. =item perl_call_sv
  2332.  
  2333. Performs a callback to the Perl sub whose name is in the SV.  See
  2334. L<perlcall>.
  2335.  
  2336.     I32    perl_call_sv (SV* sv, I32 flags)
  2337.  
  2338. =item perl_construct
  2339.  
  2340. Initializes a new Perl interpreter.  See L<perlembed>.
  2341.  
  2342. =item perl_destruct
  2343.  
  2344. Shuts down a Perl interpreter.  See L<perlembed>.
  2345.  
  2346. =item perl_eval_sv
  2347.  
  2348. Tells Perl to C<eval> the string in the SV.
  2349.  
  2350.     I32    perl_eval_sv (SV* sv, I32 flags)
  2351.  
  2352. =item perl_eval_pv
  2353.  
  2354. Tells Perl to C<eval> the given string and return an SV* result.
  2355.  
  2356.     SV*    perl_eval_pv (char* p, I32 croak_on_error)
  2357.  
  2358. =item perl_free
  2359.  
  2360. Releases a Perl interpreter.  See L<perlembed>.
  2361.  
  2362. =item perl_get_av
  2363.  
  2364. Returns the AV of the specified Perl array.  If C<create> is set and the
  2365. Perl variable does not exist then it will be created.  If C<create> is not
  2366. set and the variable does not exist then NULL is returned.
  2367.  
  2368.     AV*    perl_get_av (char* name, I32 create)
  2369.  
  2370. =item perl_get_cv
  2371.  
  2372. Returns the CV of the specified Perl sub.  If C<create> is set and the Perl
  2373. variable does not exist then it will be created.  If C<create> is not
  2374. set and the variable does not exist then NULL is returned.
  2375.  
  2376.     CV*    perl_get_cv (char* name, I32 create)
  2377.  
  2378. =item perl_get_hv
  2379.  
  2380. Returns the HV of the specified Perl hash.  If C<create> is set and the Perl
  2381. variable does not exist then it will be created.  If C<create> is not
  2382. set and the variable does not exist then NULL is returned.
  2383.  
  2384.     HV*    perl_get_hv (char* name, I32 create)
  2385.  
  2386. =item perl_get_sv
  2387.  
  2388. Returns the SV of the specified Perl scalar.  If C<create> is set and the
  2389. Perl variable does not exist then it will be created.  If C<create> is not
  2390. set and the variable does not exist then NULL is returned.
  2391.  
  2392.     SV*    perl_get_sv (char* name, I32 create)
  2393.  
  2394. =item perl_parse
  2395.  
  2396. Tells a Perl interpreter to parse a Perl script.  See L<perlembed>.
  2397.  
  2398. =item perl_require_pv
  2399.  
  2400. Tells Perl to C<require> a module.
  2401.  
  2402.     void    perl_require_pv (char* pv)
  2403.  
  2404. =item perl_run
  2405.  
  2406. Tells a Perl interpreter to run.  See L<perlembed>.
  2407.  
  2408. =item POPi
  2409.  
  2410. Pops an integer off the stack.
  2411.  
  2412.     int    POPi()
  2413.  
  2414. =item POPl
  2415.  
  2416. Pops a long off the stack.
  2417.  
  2418.     long    POPl()
  2419.  
  2420. =item POPp
  2421.  
  2422. Pops a string off the stack.
  2423.  
  2424.     char*    POPp()
  2425.  
  2426. =item POPn
  2427.  
  2428. Pops a double off the stack.
  2429.  
  2430.     double    POPn()
  2431.  
  2432. =item POPs
  2433.  
  2434. Pops an SV off the stack.
  2435.  
  2436.     SV*    POPs()
  2437.  
  2438. =item PUSHMARK
  2439.  
  2440. Opening bracket for arguments on a callback.  See C<PUTBACK> and L<perlcall>.
  2441.  
  2442.     PUSHMARK(p)
  2443.  
  2444. =item PUSHi
  2445.  
  2446. Push an integer onto the stack.  The stack must have room for this element.
  2447. Handles 'set' magic.  See C<XPUSHi>.
  2448.  
  2449.     void    PUSHi(int d)
  2450.  
  2451. =item PUSHn
  2452.  
  2453. Push a double onto the stack.  The stack must have room for this element.
  2454. Handles 'set' magic.  See C<XPUSHn>.
  2455.  
  2456.     void    PUSHn(double d)
  2457.  
  2458. =item PUSHp
  2459.  
  2460. Push a string onto the stack.  The stack must have room for this element.
  2461. The C<len> indicates the length of the string.  Handles 'set' magic.  See
  2462. C<XPUSHp>.
  2463.  
  2464.     void    PUSHp(char *c, int len )
  2465.  
  2466. =item PUSHs
  2467.  
  2468. Push an SV onto the stack.  The stack must have room for this element.  Does
  2469. not handle 'set' magic.  See C<XPUSHs>.
  2470.  
  2471.     void    PUSHs(sv)
  2472.  
  2473. =item PUSHu
  2474.  
  2475. Push an unsigned integer onto the stack.  The stack must have room for
  2476. this element.  See C<XPUSHu>.
  2477.  
  2478.     void    PUSHu(unsigned int d)
  2479.  
  2480.  
  2481. =item PUTBACK
  2482.  
  2483. Closing bracket for XSUB arguments.  This is usually handled by C<xsubpp>.
  2484. See C<PUSHMARK> and L<perlcall> for other uses.
  2485.  
  2486.     PUTBACK;
  2487.  
  2488. =item Renew
  2489.  
  2490. The XSUB-writer's interface to the C C<realloc> function.
  2491.  
  2492.     void*    Renew( void *ptr, int size, type )
  2493.  
  2494. =item Renewc
  2495.  
  2496. The XSUB-writer's interface to the C C<realloc> function, with cast.
  2497.  
  2498.     void*    Renewc( void *ptr, int size, type, cast )
  2499.  
  2500. =item RETVAL
  2501.  
  2502. Variable which is setup by C<xsubpp> to hold the return value for an XSUB.
  2503. This is always the proper type for the XSUB.
  2504. See L<perlxs/"The RETVAL Variable">.
  2505.  
  2506. =item safefree
  2507.  
  2508. The XSUB-writer's interface to the C C<free> function.
  2509.  
  2510. =item safemalloc
  2511.  
  2512. The XSUB-writer's interface to the C C<malloc> function.
  2513.  
  2514. =item saferealloc
  2515.  
  2516. The XSUB-writer's interface to the C C<realloc> function.
  2517.  
  2518. =item savepv
  2519.  
  2520. Copy a string to a safe spot.  This does not use an SV.
  2521.  
  2522.     char*    savepv (char* sv)
  2523.  
  2524. =item savepvn
  2525.  
  2526. Copy a string to a safe spot.  The C<len> indicates number of bytes to
  2527. copy.  This does not use an SV.
  2528.  
  2529.     char*    savepvn (char* sv, I32 len)
  2530.  
  2531. =item SAVETMPS
  2532.  
  2533. Opening bracket for temporaries on a callback.  See C<FREETMPS> and
  2534. L<perlcall>.
  2535.  
  2536.     SAVETMPS;
  2537.  
  2538. =item SP
  2539.  
  2540. Stack pointer.  This is usually handled by C<xsubpp>.  See C<dSP> and
  2541. C<SPAGAIN>.
  2542.  
  2543. =item SPAGAIN
  2544.  
  2545. Refetch the stack pointer.  Used after a callback.  See L<perlcall>.
  2546.  
  2547.     SPAGAIN;
  2548.  
  2549. =item ST
  2550.  
  2551. Used to access elements on the XSUB's stack.
  2552.  
  2553.     SV*    ST(int x)
  2554.  
  2555. =item strEQ
  2556.  
  2557. Test two strings to see if they are equal.  Returns true or false.
  2558.  
  2559.     int    strEQ( char *s1, char *s2 )
  2560.  
  2561. =item strGE
  2562.  
  2563. Test two strings to see if the first, C<s1>, is greater than or equal to the
  2564. second, C<s2>.  Returns true or false.
  2565.  
  2566.     int    strGE( char *s1, char *s2 )
  2567.  
  2568. =item strGT
  2569.  
  2570. Test two strings to see if the first, C<s1>, is greater than the second,
  2571. C<s2>.  Returns true or false.
  2572.  
  2573.     int    strGT( char *s1, char *s2 )
  2574.  
  2575. =item strLE
  2576.  
  2577. Test two strings to see if the first, C<s1>, is less than or equal to the
  2578. second, C<s2>.  Returns true or false.
  2579.  
  2580.     int    strLE( char *s1, char *s2 )
  2581.  
  2582. =item strLT
  2583.  
  2584. Test two strings to see if the first, C<s1>, is less than the second,
  2585. C<s2>.  Returns true or false.
  2586.  
  2587.     int    strLT( char *s1, char *s2 )
  2588.  
  2589. =item strNE
  2590.  
  2591. Test two strings to see if they are different.  Returns true or false.
  2592.  
  2593.     int    strNE( char *s1, char *s2 )
  2594.  
  2595. =item strnEQ
  2596.  
  2597. Test two strings to see if they are equal.  The C<len> parameter indicates
  2598. the number of bytes to compare.  Returns true or false.
  2599.  
  2600.     int    strnEQ( char *s1, char *s2 )
  2601.  
  2602. =item strnNE
  2603.  
  2604. Test two strings to see if they are different.  The C<len> parameter
  2605. indicates the number of bytes to compare.  Returns true or false.
  2606.  
  2607.     int    strnNE( char *s1, char *s2, int len )
  2608.  
  2609. =item sv_2mortal
  2610.  
  2611. Marks an SV as mortal.  The SV will be destroyed when the current context
  2612. ends.
  2613.  
  2614.     SV*    sv_2mortal (SV* sv)
  2615.  
  2616. =item sv_bless
  2617.  
  2618. Blesses an SV into a specified package.  The SV must be an RV.  The package
  2619. must be designated by its stash (see C<gv_stashpv()>).  The reference count
  2620. of the SV is unaffected.
  2621.  
  2622.     SV*    sv_bless (SV* sv, HV* stash)
  2623.  
  2624. =item sv_catpv
  2625.  
  2626. Concatenates the string onto the end of the string which is in the SV.
  2627. Handles 'get' magic, but not 'set' magic.  See C<sv_catpv_mg>.
  2628.  
  2629.     void    sv_catpv (SV* sv, char* ptr)
  2630.  
  2631. =item sv_catpv_mg
  2632.  
  2633. Like C<sv_catpv>, but also handles 'set' magic.
  2634.  
  2635.     void    sv_catpvn (SV* sv, char* ptr)
  2636.  
  2637. =item sv_catpvn
  2638.  
  2639. Concatenates the string onto the end of the string which is in the SV.  The
  2640. C<len> indicates number of bytes to copy.  Handles 'get' magic, but not
  2641. 'set' magic.  See C<sv_catpvn_mg>.
  2642.  
  2643.     void    sv_catpvn (SV* sv, char* ptr, STRLEN len)
  2644.  
  2645. =item sv_catpvn_mg
  2646.  
  2647. Like C<sv_catpvn>, but also handles 'set' magic.
  2648.  
  2649.     void    sv_catpvn_mg (SV* sv, char* ptr, STRLEN len)
  2650.  
  2651. =item sv_catpvf
  2652.  
  2653. Processes its arguments like C<sprintf> and appends the formatted output
  2654. to an SV.  Handles 'get' magic, but not 'set' magic.  C<SvSETMAGIC()> must
  2655. typically be called after calling this function to handle 'set' magic.
  2656.  
  2657.     void    sv_catpvf (SV* sv, const char* pat, ...)
  2658.  
  2659. =item sv_catpvf_mg
  2660.  
  2661. Like C<sv_catpvf>, but also handles 'set' magic.
  2662.  
  2663.     void    sv_catpvf_mg (SV* sv, const char* pat, ...)
  2664.  
  2665. =item sv_catsv
  2666.  
  2667. Concatenates the string from SV C<ssv> onto the end of the string in SV
  2668. C<dsv>.  Handles 'get' magic, but not 'set' magic.  See C<sv_catsv_mg>.
  2669.  
  2670.     void    sv_catsv (SV* dsv, SV* ssv)
  2671.  
  2672. =item sv_catsv_mg
  2673.  
  2674. Like C<sv_catsv>, but also handles 'set' magic.
  2675.  
  2676.     void    sv_catsv_mg (SV* dsv, SV* ssv)
  2677.  
  2678. =item sv_chop
  2679.  
  2680. Efficient removal of characters from the beginning of the string
  2681. buffer.  SvPOK(sv) must be true and the C<ptr> must be a pointer to
  2682. somewhere inside the string buffer.  The C<ptr> becomes the first
  2683. character of the adjusted string.
  2684.  
  2685.     void    sv_chop(SV* sv, char *ptr)
  2686.  
  2687.  
  2688. =item sv_cmp
  2689.  
  2690. Compares the strings in two SVs.  Returns -1, 0, or 1 indicating whether the
  2691. string in C<sv1> is less than, equal to, or greater than the string in
  2692. C<sv2>.
  2693.  
  2694.     I32    sv_cmp (SV* sv1, SV* sv2)
  2695.  
  2696. =item SvCUR
  2697.  
  2698. Returns the length of the string which is in the SV.  See C<SvLEN>.
  2699.  
  2700.     int    SvCUR (SV* sv)
  2701.  
  2702. =item SvCUR_set
  2703.  
  2704. Set the length of the string which is in the SV.  See C<SvCUR>.
  2705.  
  2706.     void    SvCUR_set (SV* sv, int val )
  2707.  
  2708. =item sv_dec
  2709.  
  2710. Auto-decrement of the value in the SV.
  2711.  
  2712.     void    sv_dec (SV* sv)
  2713.  
  2714. =item sv_derived_from
  2715.  
  2716. Returns a boolean indicating whether the SV is a subclass of the
  2717. specified class.
  2718.  
  2719.     int     sv_derived_from(SV* sv, char* class)
  2720.  
  2721. =item sv_derived_from
  2722.  
  2723. Returns a boolean indicating whether the SV is derived from the specified
  2724. class.  This is the function that implements C<UNIVERSAL::isa>.  It works
  2725. for class names as well as for objects.
  2726.  
  2727.     bool    sv_derived_from _((SV* sv, char* name));
  2728.  
  2729. =item SvEND
  2730.  
  2731. Returns a pointer to the last character in the string which is in the SV.
  2732. See C<SvCUR>.  Access the character as
  2733.  
  2734.     char*    SvEND(sv)
  2735.  
  2736. =item sv_eq
  2737.  
  2738. Returns a boolean indicating whether the strings in the two SVs are
  2739. identical.
  2740.  
  2741.     I32    sv_eq (SV* sv1, SV* sv2)
  2742.  
  2743. =item SvGETMAGIC
  2744.  
  2745. Invokes C<mg_get> on an SV if it has 'get' magic.  This macro evaluates
  2746. its argument more than once.
  2747.  
  2748.     void    SvGETMAGIC( SV *sv )
  2749.  
  2750. =item SvGROW
  2751.  
  2752. Expands the character buffer in the SV so that it has room for the
  2753. indicated number of bytes (remember to reserve space for an extra
  2754. trailing NUL character).  Calls C<sv_grow> to perform the expansion if
  2755. necessary.  Returns a pointer to the character buffer.
  2756.  
  2757.     char*    SvGROW( SV* sv, int len )
  2758.  
  2759. =item sv_grow
  2760.  
  2761. Expands the character buffer in the SV.  This will use C<sv_unref> and will
  2762. upgrade the SV to C<SVt_PV>.  Returns a pointer to the character buffer.
  2763. Use C<SvGROW>.
  2764.  
  2765. =item sv_inc
  2766.  
  2767. Auto-increment of the value in the SV.
  2768.  
  2769.     void    sv_inc (SV* sv)
  2770.  
  2771. =item sv_insert
  2772.  
  2773. Inserts a string at the specified offset/length within the SV.
  2774. Similar to the Perl substr() function.
  2775.  
  2776.     void    sv_insert(SV *sv, STRLEN offset, STRLEN len,
  2777.               char *str, STRLEN strlen)
  2778.  
  2779. =item SvIOK
  2780.  
  2781. Returns a boolean indicating whether the SV contains an integer.
  2782.  
  2783.     int    SvIOK (SV* SV)
  2784.  
  2785. =item SvIOK_off
  2786.  
  2787. Unsets the IV status of an SV.
  2788.  
  2789.     void    SvIOK_off (SV* sv)
  2790.  
  2791. =item SvIOK_on
  2792.  
  2793. Tells an SV that it is an integer.
  2794.  
  2795.     void    SvIOK_on (SV* sv)
  2796.  
  2797. =item SvIOK_only
  2798.  
  2799. Tells an SV that it is an integer and disables all other OK bits.
  2800.  
  2801.     void    SvIOK_only (SV* sv)
  2802.  
  2803. =item SvIOKp
  2804.  
  2805. Returns a boolean indicating whether the SV contains an integer.  Checks the
  2806. B<private> setting.  Use C<SvIOK>.
  2807.  
  2808.     int    SvIOKp (SV* SV)
  2809.  
  2810. =item sv_isa
  2811.  
  2812. Returns a boolean indicating whether the SV is blessed into the specified
  2813. class.  This does not check for subtypes; use C<sv_derived_from> to verify
  2814. an inheritance relationship.
  2815.  
  2816.     int    sv_isa (SV* sv, char* name)
  2817.  
  2818. =item sv_isobject
  2819.  
  2820. Returns a boolean indicating whether the SV is an RV pointing to a blessed
  2821. object.  If the SV is not an RV, or if the object is not blessed, then this
  2822. will return false.
  2823.  
  2824.     int    sv_isobject (SV* sv)
  2825.  
  2826. =item SvIV
  2827.  
  2828. Returns the integer which is in the SV.
  2829.  
  2830.     int SvIV (SV* sv)
  2831.  
  2832. =item SvIVX
  2833.  
  2834. Returns the integer which is stored in the SV.
  2835.  
  2836.     int    SvIVX (SV* sv)
  2837.  
  2838. =item SvLEN
  2839.  
  2840. Returns the size of the string buffer in the SV.  See C<SvCUR>.
  2841.  
  2842.     int    SvLEN (SV* sv)
  2843.  
  2844. =item sv_len
  2845.  
  2846. Returns the length of the string in the SV.  Use C<SvCUR>.
  2847.  
  2848.     STRLEN    sv_len (SV* sv)
  2849.  
  2850. =item sv_magic
  2851.  
  2852. Adds magic to an SV.
  2853.  
  2854.     void    sv_magic (SV* sv, SV* obj, int how, char* name, I32 namlen)
  2855.  
  2856. =item sv_mortalcopy
  2857.  
  2858. Creates a new SV which is a copy of the original SV.  The new SV is marked
  2859. as mortal.
  2860.  
  2861.     SV*    sv_mortalcopy (SV* oldsv)
  2862.  
  2863. =item sv_newmortal
  2864.  
  2865. Creates a new SV which is mortal.  The reference count of the SV is set to 1.
  2866.  
  2867.     SV*    sv_newmortal (void)
  2868.  
  2869. =item SvNIOK
  2870.  
  2871. Returns a boolean indicating whether the SV contains a number, integer or
  2872. double.
  2873.  
  2874.     int    SvNIOK (SV* SV)
  2875.  
  2876. =item SvNIOK_off
  2877.  
  2878. Unsets the NV/IV status of an SV.
  2879.  
  2880.     void    SvNIOK_off (SV* sv)
  2881.  
  2882. =item SvNIOKp
  2883.  
  2884. Returns a boolean indicating whether the SV contains a number, integer or
  2885. double.  Checks the B<private> setting.  Use C<SvNIOK>.
  2886.  
  2887.     int    SvNIOKp (SV* SV)
  2888.  
  2889. =item PL_sv_no
  2890.  
  2891. This is the C<false> SV.  See C<PL_sv_yes>.  Always refer to this as C<&PL_sv_no>.
  2892.  
  2893. =item SvNOK
  2894.  
  2895. Returns a boolean indicating whether the SV contains a double.
  2896.  
  2897.     int    SvNOK (SV* SV)
  2898.  
  2899. =item SvNOK_off
  2900.  
  2901. Unsets the NV status of an SV.
  2902.  
  2903.     void    SvNOK_off (SV* sv)
  2904.  
  2905. =item SvNOK_on
  2906.  
  2907. Tells an SV that it is a double.
  2908.  
  2909.     void    SvNOK_on (SV* sv)
  2910.  
  2911. =item SvNOK_only
  2912.  
  2913. Tells an SV that it is a double and disables all other OK bits.
  2914.  
  2915.     void    SvNOK_only (SV* sv)
  2916.  
  2917. =item SvNOKp
  2918.  
  2919. Returns a boolean indicating whether the SV contains a double.  Checks the
  2920. B<private> setting.  Use C<SvNOK>.
  2921.  
  2922.     int    SvNOKp (SV* SV)
  2923.  
  2924. =item SvNV
  2925.  
  2926. Returns the double which is stored in the SV.
  2927.  
  2928.     double    SvNV (SV* sv)
  2929.  
  2930. =item SvNVX
  2931.  
  2932. Returns the double which is stored in the SV.
  2933.  
  2934.     double    SvNVX (SV* sv)
  2935.  
  2936. =item SvOK
  2937.  
  2938. Returns a boolean indicating whether the value is an SV.
  2939.  
  2940.     int    SvOK (SV* sv)
  2941.  
  2942. =item SvOOK
  2943.  
  2944. Returns a boolean indicating whether the SvIVX is a valid offset value
  2945. for the SvPVX.  This hack is used internally to speed up removal of
  2946. characters from the beginning of a SvPV.  When SvOOK is true, then the
  2947. start of the allocated string buffer is really (SvPVX - SvIVX).
  2948.  
  2949.     int     SvOOK(SV* sv)
  2950.  
  2951. =item SvPOK
  2952.  
  2953. Returns a boolean indicating whether the SV contains a character string.
  2954.  
  2955.     int    SvPOK (SV* SV)
  2956.  
  2957. =item SvPOK_off
  2958.  
  2959. Unsets the PV status of an SV.
  2960.  
  2961.     void    SvPOK_off (SV* sv)
  2962.  
  2963. =item SvPOK_on
  2964.  
  2965. Tells an SV that it is a string.
  2966.  
  2967.     void    SvPOK_on (SV* sv)
  2968.  
  2969. =item SvPOK_only
  2970.  
  2971. Tells an SV that it is a string and disables all other OK bits.
  2972.  
  2973.     void    SvPOK_only (SV* sv)
  2974.  
  2975. =item SvPOKp
  2976.  
  2977. Returns a boolean indicating whether the SV contains a character string.
  2978. Checks the B<private> setting.  Use C<SvPOK>.
  2979.  
  2980.     int    SvPOKp (SV* SV)
  2981.  
  2982. =item SvPV
  2983.  
  2984. Returns a pointer to the string in the SV, or a stringified form of the SV
  2985. if the SV does not contain a string.  If C<len> is C<PL_na> then Perl will
  2986. handle the length on its own.  Handles 'get' magic.
  2987.  
  2988.     char*    SvPV (SV* sv, int len )
  2989.  
  2990. =item SvPV_force
  2991.  
  2992. Like <SvPV> but will force the SV into becoming a string (SvPOK).  You
  2993. want force if you are going to update the SvPVX directly.
  2994.  
  2995.     char*    SvPV_force(SV* sv, int len)
  2996.  
  2997.  
  2998. =item SvPVX
  2999.  
  3000. Returns a pointer to the string in the SV.  The SV must contain a string.
  3001.  
  3002.     char*    SvPVX (SV* sv)
  3003.  
  3004. =item SvREFCNT
  3005.  
  3006. Returns the value of the object's reference count.
  3007.  
  3008.     int    SvREFCNT (SV* sv)
  3009.  
  3010. =item SvREFCNT_dec
  3011.  
  3012. Decrements the reference count of the given SV.
  3013.  
  3014.     void    SvREFCNT_dec (SV* sv)
  3015.  
  3016. =item SvREFCNT_inc
  3017.  
  3018. Increments the reference count of the given SV.
  3019.  
  3020.     void    SvREFCNT_inc (SV* sv)
  3021.  
  3022. =item SvROK
  3023.  
  3024. Tests if the SV is an RV.
  3025.  
  3026.     int    SvROK (SV* sv)
  3027.  
  3028. =item SvROK_off
  3029.  
  3030. Unsets the RV status of an SV.
  3031.  
  3032.     void    SvROK_off (SV* sv)
  3033.  
  3034. =item SvROK_on
  3035.  
  3036. Tells an SV that it is an RV.
  3037.  
  3038.     void    SvROK_on (SV* sv)
  3039.  
  3040. =item SvRV
  3041.  
  3042. Dereferences an RV to return the SV.
  3043.  
  3044.     SV*    SvRV (SV* sv)
  3045.  
  3046. =item SvSETMAGIC
  3047.  
  3048. Invokes C<mg_set> on an SV if it has 'set' magic.  This macro evaluates
  3049. its argument more than once.
  3050.  
  3051.     void    SvSETMAGIC( SV *sv )
  3052.  
  3053. =item sv_setiv
  3054.  
  3055. Copies an integer into the given SV.  Does not handle 'set' magic.
  3056. See C<sv_setiv_mg>.
  3057.  
  3058.     void    sv_setiv (SV* sv, IV num)
  3059.  
  3060. =item sv_setiv_mg
  3061.  
  3062. Like C<sv_setiv>, but also handles 'set' magic.
  3063.  
  3064.     void    sv_setiv_mg (SV* sv, IV num)
  3065.  
  3066. =item sv_setnv
  3067.  
  3068. Copies a double into the given SV.  Does not handle 'set' magic.
  3069. See C<sv_setnv_mg>.
  3070.  
  3071.     void    sv_setnv (SV* sv, double num)
  3072.  
  3073. =item sv_setnv_mg
  3074.  
  3075. Like C<sv_setnv>, but also handles 'set' magic.
  3076.  
  3077.     void    sv_setnv_mg (SV* sv, double num)
  3078.  
  3079. =item sv_setpv
  3080.  
  3081. Copies a string into an SV.  The string must be null-terminated.
  3082. Does not handle 'set' magic.  See C<sv_setpv_mg>.
  3083.  
  3084.     void    sv_setpv (SV* sv, char* ptr)
  3085.  
  3086. =item sv_setpv_mg
  3087.  
  3088. Like C<sv_setpv>, but also handles 'set' magic.
  3089.  
  3090.     void    sv_setpv_mg (SV* sv, char* ptr)
  3091.  
  3092. =item sv_setpviv
  3093.  
  3094. Copies an integer into the given SV, also updating its string value.
  3095. Does not handle 'set' magic.  See C<sv_setpviv_mg>.
  3096.  
  3097.     void    sv_setpviv (SV* sv, IV num)
  3098.  
  3099. =item sv_setpviv_mg
  3100.  
  3101. Like C<sv_setpviv>, but also handles 'set' magic.
  3102.  
  3103.     void    sv_setpviv_mg (SV* sv, IV num)
  3104.  
  3105. =item sv_setpvn
  3106.  
  3107. Copies a string into an SV.  The C<len> parameter indicates the number of
  3108. bytes to be copied.  Does not handle 'set' magic.  See C<sv_setpvn_mg>.
  3109.  
  3110.     void    sv_setpvn (SV* sv, char* ptr, STRLEN len)
  3111.  
  3112. =item sv_setpvn_mg
  3113.  
  3114. Like C<sv_setpvn>, but also handles 'set' magic.
  3115.  
  3116.     void    sv_setpvn_mg (SV* sv, char* ptr, STRLEN len)
  3117.  
  3118. =item sv_setpvf
  3119.  
  3120. Processes its arguments like C<sprintf> and sets an SV to the formatted
  3121. output.  Does not handle 'set' magic.  See C<sv_setpvf_mg>.
  3122.  
  3123.     void    sv_setpvf (SV* sv, const char* pat, ...)
  3124.  
  3125. =item sv_setpvf_mg
  3126.  
  3127. Like C<sv_setpvf>, but also handles 'set' magic.
  3128.  
  3129.     void    sv_setpvf_mg (SV* sv, const char* pat, ...)
  3130.  
  3131. =item sv_setref_iv
  3132.  
  3133. Copies an integer into a new SV, optionally blessing the SV.  The C<rv>
  3134. argument will be upgraded to an RV.  That RV will be modified to point to
  3135. the new SV.  The C<classname> argument indicates the package for the
  3136. blessing.  Set C<classname> to C<Nullch> to avoid the blessing.  The new SV
  3137. will be returned and will have a reference count of 1.
  3138.  
  3139.     SV*    sv_setref_iv (SV *rv, char *classname, IV iv)
  3140.  
  3141. =item sv_setref_nv
  3142.  
  3143. Copies a double into a new SV, optionally blessing the SV.  The C<rv>
  3144. argument will be upgraded to an RV.  That RV will be modified to point to
  3145. the new SV.  The C<classname> argument indicates the package for the
  3146. blessing.  Set C<classname> to C<Nullch> to avoid the blessing.  The new SV
  3147. will be returned and will have a reference count of 1.
  3148.  
  3149.     SV*    sv_setref_nv (SV *rv, char *classname, double nv)
  3150.  
  3151. =item sv_setref_pv
  3152.  
  3153. Copies a pointer into a new SV, optionally blessing the SV.  The C<rv>
  3154. argument will be upgraded to an RV.  That RV will be modified to point to
  3155. the new SV.  If the C<pv> argument is NULL then C<PL_sv_undef> will be placed
  3156. into the SV.  The C<classname> argument indicates the package for the
  3157. blessing.  Set C<classname> to C<Nullch> to avoid the blessing.  The new SV
  3158. will be returned and will have a reference count of 1.
  3159.  
  3160.     SV*    sv_setref_pv (SV *rv, char *classname, void* pv)
  3161.  
  3162. Do not use with integral Perl types such as HV, AV, SV, CV, because those
  3163. objects will become corrupted by the pointer copy process.
  3164.  
  3165. Note that C<sv_setref_pvn> copies the string while this copies the pointer.
  3166.  
  3167. =item sv_setref_pvn
  3168.  
  3169. Copies a string into a new SV, optionally blessing the SV.  The length of the
  3170. string must be specified with C<n>.  The C<rv> argument will be upgraded to
  3171. an RV.  That RV will be modified to point to the new SV.  The C<classname>
  3172. argument indicates the package for the blessing.  Set C<classname> to
  3173. C<Nullch> to avoid the blessing.  The new SV will be returned and will have
  3174. a reference count of 1.
  3175.  
  3176.     SV*    sv_setref_pvn (SV *rv, char *classname, char* pv, I32 n)
  3177.  
  3178. Note that C<sv_setref_pv> copies the pointer while this copies the string.
  3179.  
  3180. =item SvSetSV
  3181.  
  3182. Calls C<sv_setsv> if dsv is not the same as ssv.  May evaluate arguments
  3183. more than once.
  3184.  
  3185.     void    SvSetSV (SV* dsv, SV* ssv)
  3186.  
  3187. =item SvSetSV_nosteal
  3188.  
  3189. Calls a non-destructive version of C<sv_setsv> if dsv is not the same as ssv.
  3190. May evaluate arguments more than once.
  3191.  
  3192.     void    SvSetSV_nosteal (SV* dsv, SV* ssv)
  3193.  
  3194. =item sv_setsv
  3195.  
  3196. Copies the contents of the source SV C<ssv> into the destination SV C<dsv>.
  3197. The source SV may be destroyed if it is mortal.  Does not handle 'set' magic.
  3198. See the macro forms C<SvSetSV>, C<SvSetSV_nosteal> and C<sv_setsv_mg>.
  3199.  
  3200.     void    sv_setsv (SV* dsv, SV* ssv)
  3201.  
  3202. =item sv_setsv_mg
  3203.  
  3204. Like C<sv_setsv>, but also handles 'set' magic.
  3205.  
  3206.     void    sv_setsv_mg (SV* dsv, SV* ssv)
  3207.  
  3208. =item sv_setuv
  3209.  
  3210. Copies an unsigned integer into the given SV.  Does not handle 'set' magic.
  3211. See C<sv_setuv_mg>.
  3212.  
  3213.     void    sv_setuv (SV* sv, UV num)
  3214.  
  3215. =item sv_setuv_mg
  3216.  
  3217. Like C<sv_setuv>, but also handles 'set' magic.
  3218.  
  3219.     void    sv_setuv_mg (SV* sv, UV num)
  3220.  
  3221. =item SvSTASH
  3222.  
  3223. Returns the stash of the SV.
  3224.  
  3225.     HV*    SvSTASH (SV* sv)
  3226.  
  3227. =item SvTAINT
  3228.  
  3229. Taints an SV if tainting is enabled
  3230.  
  3231.     void    SvTAINT (SV* sv)
  3232.  
  3233. =item SvTAINTED
  3234.  
  3235. Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if not.
  3236.  
  3237.     int    SvTAINTED (SV* sv)
  3238.  
  3239. =item SvTAINTED_off
  3240.  
  3241. Untaints an SV. Be I<very> careful with this routine, as it short-circuits
  3242. some of Perl's fundamental security features. XS module authors should
  3243. not use this function unless they fully understand all the implications
  3244. of unconditionally untainting the value. Untainting should be done in
  3245. the standard perl fashion, via a carefully crafted regexp, rather than
  3246. directly untainting variables.
  3247.  
  3248.     void    SvTAINTED_off (SV* sv)
  3249.  
  3250. =item SvTAINTED_on
  3251.  
  3252. Marks an SV as tainted.
  3253.  
  3254.     void    SvTAINTED_on (SV* sv)
  3255.  
  3256. =item SVt_IV
  3257.  
  3258. Integer type flag for scalars.  See C<svtype>.
  3259.  
  3260. =item SVt_PV
  3261.  
  3262. Pointer type flag for scalars.  See C<svtype>.
  3263.  
  3264. =item SVt_PVAV
  3265.  
  3266. Type flag for arrays.  See C<svtype>.
  3267.  
  3268. =item SVt_PVCV
  3269.  
  3270. Type flag for code refs.  See C<svtype>.
  3271.  
  3272. =item SVt_PVHV
  3273.  
  3274. Type flag for hashes.  See C<svtype>.
  3275.  
  3276. =item SVt_PVMG
  3277.  
  3278. Type flag for blessed scalars.  See C<svtype>.
  3279.  
  3280. =item SVt_NV
  3281.  
  3282. Double type flag for scalars.  See C<svtype>.
  3283.  
  3284. =item SvTRUE
  3285.  
  3286. Returns a boolean indicating whether Perl would evaluate the SV as true or
  3287. false, defined or undefined.  Does not handle 'get' magic.
  3288.  
  3289.     int    SvTRUE (SV* sv)
  3290.  
  3291. =item SvTYPE
  3292.  
  3293. Returns the type of the SV.  See C<svtype>.
  3294.  
  3295.     svtype    SvTYPE (SV* sv)
  3296.  
  3297. =item svtype
  3298.  
  3299. An enum of flags for Perl types.  These are found in the file B<sv.h> in the
  3300. C<svtype> enum.  Test these flags with the C<SvTYPE> macro.
  3301.  
  3302. =item PL_sv_undef
  3303.  
  3304. This is the C<undef> SV.  Always refer to this as C<&PL_sv_undef>.
  3305.  
  3306. =item sv_unref
  3307.  
  3308. Unsets the RV status of the SV, and decrements the reference count of
  3309. whatever was being referenced by the RV.  This can almost be thought of
  3310. as a reversal of C<newSVrv>.  See C<SvROK_off>.
  3311.  
  3312.     void    sv_unref (SV* sv)
  3313.  
  3314. =item SvUPGRADE
  3315.  
  3316. Used to upgrade an SV to a more complex form.  Uses C<sv_upgrade> to perform
  3317. the upgrade if necessary.  See C<svtype>.
  3318.  
  3319.     bool    SvUPGRADE (SV* sv, svtype mt)
  3320.  
  3321. =item sv_upgrade
  3322.  
  3323. Upgrade an SV to a more complex form.  Use C<SvUPGRADE>.  See C<svtype>.
  3324.  
  3325. =item sv_usepvn
  3326.  
  3327. Tells an SV to use C<ptr> to find its string value.  Normally the string is
  3328. stored inside the SV but sv_usepvn allows the SV to use an outside string.
  3329. The C<ptr> should point to memory that was allocated by C<malloc>.  The
  3330. string length, C<len>, must be supplied.  This function will realloc the
  3331. memory pointed to by C<ptr>, so that pointer should not be freed or used by
  3332. the programmer after giving it to sv_usepvn.  Does not handle 'set' magic.
  3333. See C<sv_usepvn_mg>.
  3334.  
  3335.     void    sv_usepvn (SV* sv, char* ptr, STRLEN len)
  3336.  
  3337. =item sv_usepvn_mg
  3338.  
  3339. Like C<sv_usepvn>, but also handles 'set' magic.
  3340.  
  3341.     void    sv_usepvn_mg (SV* sv, char* ptr, STRLEN len)
  3342.  
  3343. =item sv_vcatpvfn(sv, pat, patlen, args, svargs, svmax, used_locale)
  3344.  
  3345. Processes its arguments like C<vsprintf> and appends the formatted output
  3346. to an SV.  Uses an array of SVs if the C style variable argument list is
  3347. missing (NULL).  Indicates if locale information has been used for formatting.
  3348.  
  3349.     void    sv_catpvfn _((SV* sv, const char* pat, STRLEN patlen,
  3350.                   va_list *args, SV **svargs, I32 svmax,
  3351.                   bool *used_locale));
  3352.  
  3353. =item sv_vsetpvfn(sv, pat, patlen, args, svargs, svmax, used_locale)
  3354.  
  3355. Works like C<vcatpvfn> but copies the text into the SV instead of
  3356. appending it.
  3357.  
  3358.     void    sv_setpvfn _((SV* sv, const char* pat, STRLEN patlen,
  3359.                   va_list *args, SV **svargs, I32 svmax,
  3360.                   bool *used_locale));
  3361.  
  3362. =item SvUV
  3363.  
  3364. Returns the unsigned integer which is in the SV.
  3365.  
  3366.     UV      SvUV(SV* sv)
  3367.  
  3368. =item SvUVX
  3369.  
  3370. Returns the unsigned integer which is stored in the SV.
  3371.  
  3372.     UV      SvUVX(SV* sv)
  3373.  
  3374. =item PL_sv_yes
  3375.  
  3376. This is the C<true> SV.  See C<PL_sv_no>.  Always refer to this as C<&PL_sv_yes>.
  3377.  
  3378. =item THIS
  3379.  
  3380. Variable which is setup by C<xsubpp> to designate the object in a C++ XSUB.
  3381. This is always the proper type for the C++ object.  See C<CLASS> and
  3382. L<perlxs/"Using XS With C++">.
  3383.  
  3384. =item toLOWER
  3385.  
  3386. Converts the specified character to lowercase.
  3387.  
  3388.     int    toLOWER (char c)
  3389.  
  3390. =item toUPPER
  3391.  
  3392. Converts the specified character to uppercase.
  3393.  
  3394.     int    toUPPER (char c)
  3395.  
  3396. =item warn
  3397.  
  3398. This is the XSUB-writer's interface to Perl's C<warn> function.  Use this
  3399. function the same way you use the C C<printf> function.  See C<croak()>.
  3400.  
  3401. =item XPUSHi
  3402.  
  3403. Push an integer onto the stack, extending the stack if necessary.  Handles
  3404. 'set' magic. See C<PUSHi>.
  3405.  
  3406.     XPUSHi(int d)
  3407.  
  3408. =item XPUSHn
  3409.  
  3410. Push a double onto the stack, extending the stack if necessary.  Handles 'set'
  3411. magic.  See C<PUSHn>.
  3412.  
  3413.     XPUSHn(double d)
  3414.  
  3415. =item XPUSHp
  3416.  
  3417. Push a string onto the stack, extending the stack if necessary.  The C<len>
  3418. indicates the length of the string.  Handles 'set' magic.  See C<PUSHp>.
  3419.  
  3420.     XPUSHp(char *c, int len)
  3421.  
  3422. =item XPUSHs
  3423.  
  3424. Push an SV onto the stack, extending the stack if necessary.  Does not
  3425. handle 'set' magic.  See C<PUSHs>.
  3426.  
  3427.     XPUSHs(sv)
  3428.  
  3429. =item XPUSHu
  3430.  
  3431. Push an unsigned integer onto the stack, extending the stack if
  3432. necessary.  See C<PUSHu>.
  3433.  
  3434. =item XS
  3435.  
  3436. Macro to declare an XSUB and its C parameter list.  This is handled by
  3437. C<xsubpp>.
  3438.  
  3439. =item XSRETURN
  3440.  
  3441. Return from XSUB, indicating number of items on the stack.  This is usually
  3442. handled by C<xsubpp>.
  3443.  
  3444.     XSRETURN(int x)
  3445.  
  3446. =item XSRETURN_EMPTY
  3447.  
  3448. Return an empty list from an XSUB immediately.
  3449.  
  3450.     XSRETURN_EMPTY;
  3451.  
  3452. =item XSRETURN_IV
  3453.  
  3454. Return an integer from an XSUB immediately.  Uses C<XST_mIV>.
  3455.  
  3456.     XSRETURN_IV(IV v)
  3457.  
  3458. =item XSRETURN_NO
  3459.  
  3460. Return C<&PL_sv_no> from an XSUB immediately.  Uses C<XST_mNO>.
  3461.  
  3462.     XSRETURN_NO;
  3463.  
  3464. =item XSRETURN_NV
  3465.  
  3466. Return an double from an XSUB immediately.  Uses C<XST_mNV>.
  3467.  
  3468.     XSRETURN_NV(NV v)
  3469.  
  3470. =item XSRETURN_PV
  3471.  
  3472. Return a copy of a string from an XSUB immediately.  Uses C<XST_mPV>.
  3473.  
  3474.     XSRETURN_PV(char *v)
  3475.  
  3476. =item XSRETURN_UNDEF
  3477.  
  3478. Return C<&PL_sv_undef> from an XSUB immediately.  Uses C<XST_mUNDEF>.
  3479.  
  3480.     XSRETURN_UNDEF;
  3481.  
  3482. =item XSRETURN_YES
  3483.  
  3484. Return C<&PL_sv_yes> from an XSUB immediately.  Uses C<XST_mYES>.
  3485.  
  3486.     XSRETURN_YES;
  3487.  
  3488. =item XST_mIV
  3489.  
  3490. Place an integer into the specified position C<i> on the stack.  The value is
  3491. stored in a new mortal SV.
  3492.  
  3493.     XST_mIV( int i, IV v )
  3494.  
  3495. =item XST_mNV
  3496.  
  3497. Place a double into the specified position C<i> on the stack.  The value is
  3498. stored in a new mortal SV.
  3499.  
  3500.     XST_mNV( int i, NV v )
  3501.  
  3502. =item XST_mNO
  3503.  
  3504. Place C<&PL_sv_no> into the specified position C<i> on the stack.
  3505.  
  3506.     XST_mNO( int i )
  3507.  
  3508. =item XST_mPV
  3509.  
  3510. Place a copy of a string into the specified position C<i> on the stack.  The
  3511. value is stored in a new mortal SV.
  3512.  
  3513.     XST_mPV( int i, char *v )
  3514.  
  3515. =item XST_mUNDEF
  3516.  
  3517. Place C<&PL_sv_undef> into the specified position C<i> on the stack.
  3518.  
  3519.     XST_mUNDEF( int i )
  3520.  
  3521. =item XST_mYES
  3522.  
  3523. Place C<&PL_sv_yes> into the specified position C<i> on the stack.
  3524.  
  3525.     XST_mYES( int i )
  3526.  
  3527. =item XS_VERSION
  3528.  
  3529. The version identifier for an XS module.  This is usually handled
  3530. automatically by C<ExtUtils::MakeMaker>.  See C<XS_VERSION_BOOTCHECK>.
  3531.  
  3532. =item XS_VERSION_BOOTCHECK
  3533.  
  3534. Macro to verify that a PM module's $VERSION variable matches the XS module's
  3535. C<XS_VERSION> variable.  This is usually handled automatically by
  3536. C<xsubpp>.  See L<perlxs/"The VERSIONCHECK: Keyword">.
  3537.  
  3538. =item Zero
  3539.  
  3540. The XSUB-writer's interface to the C C<memzero> function.  The C<d> is the
  3541. destination, C<n> is the number of items, and C<t> is the type.
  3542.  
  3543.     void    Zero( d, n, t )
  3544.  
  3545. =back
  3546.  
  3547. =head1 AUTHORS
  3548.  
  3549. Until May 1997, this document was maintained by Jeff Okamoto
  3550. <okamoto@corp.hp.com>.  It is now maintained as part of Perl itself.
  3551.  
  3552. With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
  3553. Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
  3554. Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
  3555. Stephen McCamant, and Gurusamy Sarathy.
  3556.  
  3557. API Listing originally by Dean Roehrich <roehrich@cray.com>.
  3558.